Я не понимаю, что здесь делает wpf (используя .NET 3.5 с С#):
в моих ресурсах приложения я определил несколько шаблонов данных и иерархических шаблонов данных для разных типов моделей представления. Пока это работает хорошо, и TreeView в моем окне показывает узлы, как и ожидалось. Я должен сказать, что все дочерние элементы в каждой ViewModel появились как 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 не выбирает автоматически правильные шаблоны для более глубоких дочерних элементов. Так что же в этом плохого?