2011-09-03 51 views
1

我的TreeView节点有一个复选框。如果用户选中一个复选框,则应该自动禁用rootnode子节点集合中的所有其他复选框。如何使用触发器检查复选框?

这里是我的树视图:

<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

修改视图模型是要走的路:

的子节点集合中的每个项目应实施新的布尔属性,“已启用”,例如和“经过”另一个布尔。 然后将“Checked”复选框的“IsChecked”属性和“Enabled”属性绑定为“IsEnabled”,并在“Checked”的设置访问器中将必要的逻辑设置为false,以便将其他项中的“Enabled”属性设置为false集合。

0

您可以从RadioBox派生并实现你自己或这个功能对于检查属性的改变您的视图模型的寄存器,并将所有其他列表项检查属性。