Wpf 如何使用触发器选中复选框?
我的树视图节点有一个复选框。如果用户选中一个复选框,则应自动禁用根节点子节点集合中的所有其他复选框 这是我的树视图:Wpf 如何使用触发器选中复选框?,wpf,mvvm,triggers,treeview,Wpf,Mvvm,Triggers,Treeview,我的树视图节点有一个复选框。如果用户选中一个复选框,则应自动禁用根节点子节点集合中的所有其他复选框 这是我的树视图: <TreeView ItemsSource="{Binding Items}"> <TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}" > <Style.Triggers>
<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>
您可以从RadioBox派生并自行实现此功能,或者您的视图模型注册已选中属性的更改,并重置所有其他列表项已选中属性。修改视图模型是一种方法:
子节点集合中的每个项都应实现一个新的bool属性,例如“Enabled”和另一个bool“Checked”。
然后将“Checked”绑定到复选框的“IsChecked”属性,将“Enabled”绑定到“IsEnabled”,并在set accesor中构建必要的逻辑,或将“Checked”绑定到集合的其他每一项中的“Enabled”属性设置为false