У меня есть элемент управления TreeView
, который показывает различные типы объектов. Я использую несколько DataTemplates, по одному для каждого типа, с установленными DataType
.
Код:В дереве с несколькими DataTemplates, как применить стиль только к одному из них
<TreeView>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Family}" ItemsSource = "Members">
<!-- template omitted here-->
</HierarchicalDataTemplate>
<DataTemplate DataType = "{x:Type local:FamilyMember}">
<!--template omitted-->
</DataTemplate>
</TreeView.Resources>
</TreeView>
Теперь я хочу, чтобы применить стиль к HierarchicalDataTemplate
и только к нему. Я должен использовать стиль, потому что я установил несколько свойств TreeViewItem
, который в этом случае является контейнером элементов. Я пробовал:
<HierarchicalDataTemplate DataType="{x:Type local:Family}" ItemsSource = "Members">
<HierarchicalDataTemplate.ItemsContainerStyle>
<Style TargetType = "TreeViewItem">
<!-- some styling of the tree view item-->
</Style>
<\HierarchicalDataTemplate.ItemsContainerStyle>
<!-- template omitted here-->
</HierarchicalDataTemplate>
но стиль применяется ко всем элементам дерева, даже тех, которые представляют FamilyMember
объекты, которые не являются одной и той же матрицы.
Как я могу это сделать?
Спасибо за ответ, но есть ли способ сделать это в простой XAML? – RoadBump
Ничего, о чем я могу думать, будет только XAML. Тем не менее, вы могли бы, вероятно, разработать типичные для класса типы сопоставления типов стилей, если вы потратили на это некоторое время. Затем вы можете использовать его повсюду и выполнять работу только в XAML. Я никогда не пробовал это сам. – Xavier
Я попробовал, и это решило проблему. Но теперь по странной причине я получаю много ошибок привязки в окне вывода, говоря, что 'FamilyMember' не имеет члена с именем' Members'. Похоже, что он пытается применить элемент «HierarchicalDataTemplate» к членам семьи, даже если «DataType» установлен в «Family». Что делать сейчас? – RoadBump