У меня есть иерархическое древовидное представление с несколькими типами элементов, привязанных к различным уровням. Мне нужно знать, какой тип элемента выбран. Тип элемента определяет видимость меню в другом месте приложения.Получить тип selectedItem в иерархическом treeview
Я понимаю, что я не могу дать иерархическому элементу имя, иначе это было бы идеально.
Иерархическая TreeView:
<TreeView x:Name="MainTreeView">
<TreeViewItem x:Name="RobotTreeViewItemOwner" Header="Robots" ItemsSource="{Binding Robots}">
<TreeViewItem.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Robot}" ItemsSource="{Binding Processes}">
</HierarchicalDataTemplate>
</TreeViewItem>
</TreeViewItem>
<TreeViewItem x:Name="BookTreeViewItemOwner" Header="Books" ItemsSource="{Binding Books}">
<TreeViewItem.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Book}" ItemsSource="{Binding Pages}">
</HierarchicalDataTemplate>
</TreeViewItem>
</TreeViewItem>
</TreeView>
Следующий код связывает один уровень выше, чем я ищу. Есть ли способ воспроизвести это для фактических элементов Robot или Book?
<MenuItem DataContext="{Binding ElementName=BookTreeViewItemOwner}" Header="Print Book" Visibility="{Binding IsSelected, Converter={StaticResource IsBook}}" />
Согласен, и это было моим первоначальным обходным решением. Однако это добавляет немного дополнительной логики. Эта логика войдет в кодовое слово, которое, как общего принципа, следует избегать. – Brandon