我想从C#WPF中的列表创建动态树视图。因此,我将从列表中获取所有队列(queue1,...)和主题(topic1,...)。此外,我需要针对不同层次结构点的特定上下文菜单。我想创建一个像这样的树形视图:
队列
主题
应该有针对重点队列的特定上下文菜单和针对重点主题的特定菜单。另外,我需要一个专门用于子项queues1和topic1的项目。我尝试了一些尝试,但没有成功。有没有人举一个小例子来说明谁可以解决这个问题?
最佳问候
创建树不是问题。它涉及一些工作,但很简单。您必须从列表中创建分层数据模板,然后填充树。以下链接具有所有信息。
或者,如果您不想使用SDK的话
页面资源:
xaml中的树:
<Grid TextElement.FontSize="10" DataContext="{StaticResource MyHierarchicalViewSource}" >
<GroupBox x:Name="gbTree">
<TreeView Name="HierarchyTreeview" HorizontalAlignment="Left" AllowDrop="True"
BorderThickness="0" VerticalAlignment="Top" Height="Auto"
ItemsSource="{Binding}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Itemchildren, Mode=TwoWay}">
<StackPanel Orientation="Horizontal" Margin="2">
<TextBlock x:Name="text" Text="{Binding Item.ItemLabel}" >
</TextBlock>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</GroupBox>
</Grid>
代码行为:
Me._HierarchyViewSource = CType(Me.Resources("MyHierarchicalViewSource"), System.Windows.Data.CollectionViewSource)
Me._HierarchyViewSource.Source = your hierarchical data collection
假设您的层次结构类结构:
Item has
ItemChildren collection
但是,在创建特定的上下文菜单时,我遇到相同的问题。我已经发布了我自己的问题,还没有找到解决方案。我试图用数据触发器来做到这一点,但没有运气。我知道的唯一方法是为整个树创建上下文菜单,并根据项目类型使它可见或不可见。
如果找到解决方法,我将发布。
我使用以下代码动态添加到TreeView。
CategorieList-具有ID,名称,布尔值作为父类别的IsSubCategory和Id的类别的集合。
private void AddToTree()
{
List<Category> topCategory = CategorieList.Where(c => c.IsSubCategory == false).ToList();
foreach(Category c in topCategory)
{
CategoryTree.Items.Add(CreateTreeViewItem(c));
}
}
private TreeViewItem CreateTreeViewItem(Category category)
{
TreeViewItem tItem = new TreeViewItem();
tItem.Header = category.Name;
List<Category> sub = CategorieList.Where(c => category.Id == c.ParentCategory).ToList();
if (null != sub && sub.Count() != 0)
{
foreach (Category c in sub)
{
TreeViewItem item = CreateTreeViewItem(c);
tItem.Items.Add(item);
}
}
return tItem;
}
下面是XAML代码
<TreeView x:Name="CategoryTree"> </TreeView>