2011-09-03 50 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派生並實現你自己或這個功能對於檢查屬性的改變您的視圖模型的寄存器,並將所有其他列表項檢查屬性。

相關問題