aal*_*675 7 c# wpf treeview xaml hierarchicaldatatemplate
我试图让我的树视图按照它们是什么来组合类似项目的集合.为了保持通用性,我的对象层次结构可能如下所示:
现在我的TreeView显示这些对象与对象模型完全一样,但我想要做的是为每个对象类型插入一个TreeView节点,使它看起来像这样:
我在这里看到一个类似的问题,有人建议有两个单独的,HierarchicalDataTemplates
所以我创建了一个'对象组#1'级别,其中包含一个带有类型列表的TreeView,但这真是笨拙,因为它是一个完整的单独的TreeView里面一些节点.我也一直在尝试使用a CollectionViewSource
来过滤掉每个类别中的项目,但这对我来说并不是很好,因为我无法弄清楚如何显示它们.
我想我的问题归结为:我如何组成一个HierarchicalDataTemplate
小组呢?如果有人能指出我正确的方向,我会非常感激.
我可以发布一些代码,如果有人想看,但我真的只是想弄清楚如何做我想要的,所以我的代码现在只是一个非常直接的数据绑定树视图.
你可以通过绑定ItemsSource
你的HierarchicalDataTempalate
使用来达到这个效果IValueConverter
.此转换器只是执行以下操作:
public class MyConverter : IValueConverter
{
public object Convert(object value, ...)
{
return
from item in (IEnumerable<MyItem>)value
group item by item.Type into g
select new { Type = g.Key, Items = g }
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在您HierarchcialDataTemplate
可以如下:
<HierarchicalDataTemplate ItemsSource="{Binding SomePath, Converter={x:Static local:MyConverter}">
<HierarchicalDataTemplate.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding Items}"
TargetType="{x:Type local:MyItem}"
ItemTemplate="{StaticResource MyItemTemplate}">
<!-- may omit ItemTemplate in prior line to use implicit template -->
<TextBlock Text="{Binding Type}" /> <!-- Header for type -->
</HierarchicalDataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
<!-- header for "Object Group #1" -->
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9971 次 |
最近记录: |