我有一个 TreeView,我绑定到一个为每个项目ItemsSource
创建一个的 TreeView。CheckBox
这是xaml:
<TreeView x:Name="ReasonTreeView" Height="Auto" Background="Transparent"
BorderThickness="0" IsTabStop="False"
ItemsSource="{Binding Path=AnswerOptions}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type QSB:Answer}" ItemsSource="{Binding Path=AnswerOptions}">
<StackPanel Orientation="Horizontal">
<CheckBox Margin="0,5"
IsChecked="{Binding Path=IsSelected}"
IsEnabled="{Binding Path=Value,
Converter={StaticResource ReasonValueToEnabledConverter}}"
Visibility="{Binding Path=AnswerOptions,
Converter={StaticResource ParentNodeVisConverter}}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
然后在我的应用程序中创建这些的多个实例。根据 的实例TreeView
,某些CheckBoxes
需要被禁用,以便用户无法选择它们,但是我不确定如何访问HierarchicalDataTemplate
代码中的各个项目。
环顾了一会后,我唯一能想到的就是TreeView
在代码后面而不是 xaml 中构建整体,但我宁愿不必诉诸于此。还有什么我可以做的吗?
为了帮助澄清我的观点并出于说明目的,这本质上是我想要做的(在伪代码中):ReasonTreeView.ItemsSource[5].IsEnabled = false;
这将禁用's 的索引 5 处的CheckBox
(以及其中的任何其他控件)HierarchicalDataTemplateItem
TreeView
ItemsSource
让我知道是否需要更多信息