wpf,下拉列表下拉时显示树结构.
wpf,下拉列表下拉时显示树结构. --------------------编程问答-------------------- 楼主啊 我也遇到这个难题了 如果你解决了 记得分享一下 --------------------编程问答-------------------- 好的一起分享 --------------------编程问答-------------------- 同样求解 --------------------编程问答-------------------- 在下拉列表控件的事件中控制一下,判断显示还是隐藏。 --------------------编程问答-------------------- http://msdn.microsoft.com/zh-cn/magazine/cc700358.aspx --------------------编程问答-------------------- 顶。。。。。。。。。 --------------------编程问答-------------------- WellbeingZhang能说的具体点吗 --------------------编程问答-------------------- treeview??? --------------------编程问答-------------------- 对,就是下拉的是树型结构 --------------------编程问答--------------------
他这是答非所问,还具体?算了吧。
你那个需要自己设置TreeView才行,默认TreeView隐藏,当点击下来按钮才显示,显示的位置是按钮下方,总之是做一个控件,然后调用,这样方便,但是需要会设计自己的控件。 --------------------编程问答-------------------- qldsrx(青龙白虎)
你说的是一种方法。我想在没有方法时才这样做。
还有没有别的方法,比如在ItemTemplate里用树控件或TreeViewItem。 --------------------编程问答-------------------- 你用个文本框 弄个下拉的箭头图标 然后自己写个面板 面板里面放treeview 不是挺好吗 --------------------编程问答-------------------- --------------------编程问答-------------------- 查到一些,和我要的还有差距,我先研究下。
<Window.Resources>
<Style x:Key="ComboBoxTreeItem" TargetType="{x:Type ComboBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TreeView x:Name="Tree1" SelectedItemChanged="Tree1_SelectedItemChanged" Initialized="Tree1_Initialized">
<TreeViewItem Header="Test1" x:Name="Tree1Item1">
<TreeViewItem Header="1test1" />
<TreeViewItem Header="2test2" />
</TreeViewItem>
<TreeViewItem Header="Test2" />
</TreeView>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<StackPanel>
<ComboBox Height="23" Margin="22,47,136,0" VerticalAlignment="Top" x:Name="Combo1">
<ComboBoxItem Style="{StaticResource ComboBoxTreeItem}" Name="Combo1Item1" />
</ComboBox>
<Button Height="27" Name="Button1" Width="76">Button</Button>
</StackPanel>
</Grid>
private void Tree1_Initialized(object sender, EventArgs e)
{
//Dim trv As TreeView = CType(sender, TreeView)
//Dim trvitem0 As New TreeViewItem
//trvitem0.Header = "Initialized item"
//Dim trvitem1 As TreeViewItem = trv.Items(1)
//trvitem1.Items.Add(trvitem0)
TreeView trv= sender as TreeView;
TreeViewItem trvitem0=new TreeViewItem() ;
trvitem0.Header = "Initialized item";
TreeViewItem trvitem1= trv.Items[1] as TreeViewItem;
trvitem1.Items.Add(trvitem0);
}
private void Tree1_SelectedItemChanged(object sender, RoutedEventArgs e)
{
//TreeView trv=sender as TreeView ;
//TreeViewItem trvitem=trv.SelectedValue as TreeViewItem;
//ComboBoxItem comitem=new ComboBoxItem ();
//comitem.Content = trvitem.Header;
//Combo1.Items[0] = comitem;
//Dim As TreeView = CType(sender, TreeView)
//Dim trvitem As TreeViewItem = CType(trv.SelectedValue, TreeViewItem)
//Dim comitem As New ComboBoxItem
//comitem.Content = trvitem.Header
//Combo1.Items(0) = comitem
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
//Dim trv As TreeView = Combo1Item1.Template.FindName("Tree1", Combo1Item1)
//If Not trv Is Nothing Then
// Dim trvitem0 As New TreeViewItem
// trvitem0.Header = "Item from Button"
// Dim trvitem1 As TreeViewItem = trv.Items(1)
// trvitem1.Items.Add(trvitem0)
//End If
TreeView trv= Combo1Item1.Template.FindName("Tree1", Combo1Item1) as TreeView;
if( trv !=null)
{
TreeViewItem trvitem0=new TreeViewItem ();
trvitem0.Header = "Item from Button";
TreeViewItem trvitem1 = trv.Items[1] as TreeViewItem;
trvitem1.Items.Add(trvitem0);
}
}
--------------------编程问答-------------------- <TreeView x:Name="tvProperties" Height="300" Padding="0" Margin="60,10,0,0" HorizontalAlignment="Left" Background="Transparent" BorderThickness="0" ScrollViewer.VerticalScrollBarVisibility="Hidden">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<Grid Width="205" MouseLeftButtonUp="Grid_MouseLeftButtonUp_1" Height="23">
<TextBox x:Name="updateGroupName" Margin="-90,0,0,0" Width="100" Text="{Binding DisplayName}" Visibility="Collapsed" KeyDown="updateGroupName_KeyDown_1"></TextBox>
<TextBlock x:Name="names" FontSize="14" VerticalAlignment="Center" Margin="10,0,0,0" Text="{Binding DisplayName}"/>
<Button BorderThickness="0" Tag="{Binding id}" FontSize="18" Width="23" Height="21" Margin="110,-2,0,0" Visibility="Hidden" x:Name="update" ToolTip="编辑" Click="update_Click_2" Style="{StaticResource updatestyle}">
<Button.Background>
<ImageBrush ImageSource="images/update.png"/>
</Button.Background>
</Button>
<Button Tag="{Binding groupId}" BorderThickness="0" Width="18" Height="21" FontSize="18" Margin="170,-2,0,0" CommandParameter="{Binding id}" Visibility="Hidden" x:Name="delete" ToolTip="删除" Click="delete_Click_2" Style="{StaticResource deletestyle}">
<Button.Background>
<ImageBrush ImageSource="images/delete.png"/>
</Button.Background>
</Button>
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView> --------------------编程问答-------------------- internal class PropertyNodeItem
{
public string type = "";
public string groupId { set; get; }
public string id { set; get; }
public string DisplayName { get; set; }//员工
public string Name { get; set; } //部门
public List<PropertyNodeItem> Children { get; set; }
public bool isChecked { set; get; }
public PropertyNodeItem Parent { get; set; }
public PropertyNodeItem()
{
Children = new List<PropertyNodeItem>();
}
} --------------------编程问答-------------------- private void ShowTreeView()
{
itemList.Clear();
for (int i = 0; i < GroupManager.groupsList.Count; i++)
{
PropertyNodeItem node1 = new PropertyNodeItem()
{
DisplayName = GroupManager.groupsList[i].name,
id = GroupManager.groupsList[i].id,
isChecked = false,
Name = "This is the discription of Node1. This is a folder.",
};
List<User> listUser = new List<User>();
if (GroupManager.groupsList[i].members != null && !GroupManager.groupsList[i].members.Equals(""))
{
listUser = UserManager.getUsers(GroupManager.groupsList[i].members);
}
for (int j = 0; j < listUser.Count; j++)
{
PropertyNodeItem node1tag1 = new PropertyNodeItem()
{
DisplayName = listUser[j].nickname,
isChecked = false,
id = listUser[j].id + "",
groupId = GroupManager.groupsList[i].id,
Name = "This is the discription of Tag 1. This is a tag.",
};
node1.Children.Add(node1tag1);
}
itemList.Add(node1);
}
this.tvProperties.ItemsSource = null;
this.tvProperties.ItemsSource = itemList;
} --------------------编程问答-------------------- http://download.csdn.net/detail/lzliang2009/5531603
补充:.NET技术 , C#