我的TreeView节点有一个复选框。如果用户选中一个复选框,则应自动禁用rootnode subnodecollection中的所有其他复选框。
这是我的树视图:
<TreeView ItemsSource="{Binding Items}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" >
<Style.Triggers>
<Trigger Property="HasItems" Value="true">
<Setter Property="Focusable" Value="False"/>
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding SubNodes}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0"/>
<TextBlock Text="{Binding Text}" Grid.Column="1"/>
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
答案 0 :(得分:0)
您可以从RadioBox派生并在您自己或您的视图模型寄存器上实现此功能,以更改已检查属性并重置所有其他列表项检查属性。
答案 1 :(得分:0)
修改ViewModel是可行的方法:
SubNodes集合中的每个项目都应该实现一个新的bool属性,例如'Enabled'和另一个bool'Checked'。 然后将'Checked'绑定到Checkbox的'IsChecked'属性并'Enabled'绑定到'IsEnabled'并在'Checked'的set accesor中构建必要的逻辑,将其设置为false,在其他每个项目中启用'Enabled'属性集合。