我不明白 wpf 在这里做了什么(使用 .NET 3.5 和 C#):
在我的应用程序资源中,我为不同类型的 ViewModel 定义了几个 DataTemplates 和 HierarchicalDataTemplates。到目前为止,这运作良好,我的窗口中的 TreeView 显示了预期的节点。我不得不说每个 ViewModel 中的所有 Childelements 都是以 ICollectionView 的形式出现的。现在我决定使用 ICollectionView 的特性,对 TreeView 的“根节点”进行分组、排序和过滤。我使 TreeView 看起来像这样:
<TreeView ItemsSource="{Binding Path=Elements.Groups}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Items}" ItemTemplate="{StaticResource SOMEITEMTEMPLATENAME}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
ViewModel 看起来像这样:
class RootViewModel
: INotifyPropertyChanged
{
public ICollectionView Elements
{
get
{
ICollectionView view = CollectionViewSource.GetDefaultView(_elementsFromModel.Select(x => new FirstChildViewModel(x));
view.GroupDescriptions.Add(new PropertyGroupDescription("Name"));
view.Filter = delegate(Object x) { /*do some filter stuff here*/ };
return view;
}
}
}
class FirstchildViewModel
: INotifyPropertyChanged
{
/*some other stuff here*/
public ICollectionView Items
{
get;
}
}
现在的问题是 TreeView 没有为更深的子元素自动选择正确的模板。那么这有什么问题呢?