xaml c#treeview checkboxex取消选中所有其他人

时间:2014-11-22 11:56:04

标签: c# xaml checkbox treeview

我有这个xaml。我需要取消选中其中一个选中的复选框。换句话说,我只允许检查一个。我在运行时添加TreeViewItems。

<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 个答案:

答案 0 :(得分:1)

您可以使用属于同一组的RadioButton控件,这样您就可以获得一次只能选择一个选项的行为。

然后编辑控件模板以显示CheckBox个控件来代替那些RadioButton,并将每个IsChecked的{​​{1}}属性绑定到其父级CheckBox。现在当你&#34;检查&#34; 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可以选择多个选项。