Как сделать TreeViewItem неразборным
Я работаю над проектом WPF, и у меня есть TreeView
с помощью HierarchicalDataTemplates
, Мне удалось установить несколько разных уровней узлов. Пока все идет хорошо.
<TreeView Margin="14,14,14,14" Name="treeView" ItemsSource="{Binding Tree}"
BorderThickness="0">
<TreeView.Resources>
<!--
First Level
-->
<HierarchicalDataTemplate DataType="{x:Type vm:FirstLevelViewModel}"
ItemsSource="{Binding Children}" >
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding SomeText}" FontSize="14" FontWeight="Bold" Foreground="DarkBlue" />
</StackPanel>
</HierarchicalDataTemplate>
<!--
Second Level
-->
<HierarchicalDataTemplate DataType="{x:Type vm:SecondLevelViewModel}"
ItemsSource="{Binding Children}" >
<CheckBox Name="checkBox" IsChecked="{Binding IsChecked}" IsEnabled="{Binding IsEnabled}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding SomeText}" FontSize="14" />
</StackPanel>
</CheckBox>
</HierarchicalDataTemplate>
. . . .
Моя проблема заключается в следующем: мне нужно, чтобы некоторые узлы были неразборными.
Есть ли способ добиться этого? Я искал об этом без удачи.
1 ответ
Решение
Шаблон по умолчанию TreeViewItem
определяет ToggleButton
который показывает и скрывает подпункты. Вы можете создать свой собственный шаблон на основе того, в котором IsEnabled
свойство привязано к некоторому свойству вашего элемента, так что его можно предотвратить переключением, конечно же, вы должны также связать IsExpanded
(может быть сделано и вне шаблона), и значение в этом случае всегда должно быть true
,