2014-11-22 14 views
0

我有這樣的XAML。我需要取消選中所有其他複選框。我換句話說只允許檢查一個。我在運行時添加TreeViewItems。在運行時XAML C#樹視圖checkboxex取消所有其他

<TreeView Name="treeView_max" > 
    <TreeView.Resources> 
     <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="HeaderTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal" > 
          <CheckBox Name="chk" Margin="2" Tag="{Binding}" Checked="checkBox_Checked"> 
          </CheckBox> 
         </StackPanel> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TreeView.Resources> 
</TreeView> 

添加TreeViewItems:

foreach (Genesyslab.Desktop.Modules.Core.Model.BusinessAttributes.IDispositionCodeValue item in listOfDispositionCodeValueItemsControl.Items) 
{ 
    TreeViewItem newChild2 = new TreeViewItem(); 
    newChild2.Header = item.DisplayName.Remove(0,item.DisplayName.IndexOf("-") + 1); 
    treeView_max.Items.Add(newChild2);..........` 

private void checkBox_Checked(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     //uncheck all checkboxes except selected one   
    } 
    catch (Exception es) 
    { 
     MessageBox.Show(es.ToString()); 
    } 
} 

回答

1

您可以使用屬於同一組,而不是RadioButton控制,這將讓你只有一種選擇的行爲可以一次選擇。

然後編輯控制模板代替那些RadioButton的的顯示CheckBox控制,並且每個CheckBoxIsChecked屬性綁定到其父RadioButton。現在,當您「檢查」一CheckBox,所有其他CheckBox控制將成爲選中。

<TreeView Name="treeView_max" > 
    <TreeView.Resources> 
     <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="HeaderTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal" > 
          <RadioButton Name="chk" Margin="2" Tag="{Binding}" GroupName="SomeGroup"> 
           <RadioButton.Template> 
            <ControlTemplate> 
             <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay, RelativeSource={RelativeSource AncestorType=RadioButton}}" /> 
            </ControlTemplate> 
           </RadioButton.Template> 
          </RadioButton> 
         </StackPanel> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TreeView.Resources> 
</TreeView> 

要小心你在哪裏使用它。用戶習慣於看到RadioButton的時,他們只能夠選擇一個選項,並CheckBox的,他們可以選擇多個選項。

相關問題