带有复选框和单选按钮的TreeView
本文关键字:TreeView 单选按钮 复选框 | 更新日期: 2023-09-27 18:14:22
我想创建一个单选按钮作为一个树视图的孩子,但是当我这样做,我可以选择超过1个单选按钮。更重要的是,当我选择了一个单选按钮,我不能取消选择它。
TreeView:
<TreeView Name="tree" Margin="5" Background="LightBlue" ></TreeView>
主窗口:
public partial class MainWindow : Window
{
private TreeViewItem createCheckBoxInTree(string content, TreeView tree)
{
TreeViewItem item = new TreeViewItem()
{
Header = new CheckBox()
{
Content = content
}
};
tree.Items.Add(item);
return item;
}
private void createRadioButtonsChildren(string content, TreeViewItem item)
{
TreeViewItem childRadio = new TreeViewItem()
{
Header = new RadioButton()
{
Content = content
}
};
item.Items.Add(childRadio);
}
public MainWindow()
{
InitializeComponent();
TreeViewItem parent = createCheckBoxInTree("parent", tree);
createRadioButtonsChildren("child1", parent);
createRadioButtonsChildren("child2", parent);
createRadioButtonsChildren("child3", parent);
}
}
您可以为每个单选按钮指定组名。
private void createRadioButtonsChildren(string content, TreeViewItem item)
{
TreeViewItem childRadio = new TreeViewItem()
{
Header = new RadioButton()
{
GroupName="Group1",
Content = content
}
};
item.Items.Add(childRadio);
}
这些RadioButtons被选中而没有重置其他按钮的状态的原因是您忘记为您创建的RadioButtons设置一个组。
请记住,RadioButtons必须属于至少一个被选中的组。这就是为什么不能取消选择的原因。将cs文件中的代码更改为下面的代码,它将按照您的要求工作。
protected string RadioButtonGroupName { get; set; }
private TreeViewItem createCheckBoxInTree(string content, TreeView tree)
{
TreeViewItem item = new TreeViewItem()
{
Header = new CheckBox()
{
Content = content
}
};
tree.Items.Add(item);
return item;
}
private void createRadioButtonsChildren(string content, TreeViewItem item)
{
TreeViewItem childRadio = new TreeViewItem()
{
Header = new RadioButton()
{
Content = content,
GroupName = RadioButtonGroupName,
}
};
item.Items.Add(childRadio);
}
public MainWindow()
{
InitializeComponent();
RadioButtonGroupName = "MyFirstGroup";
TreeViewItem parent = createCheckBoxInTree("parent", tree);
createRadioButtonsChildren("child1", parent);
createRadioButtonsChildren("child2", parent);
createRadioButtonsChildren("child3", parent);
}
如果这解决了你的问题,请记住将此标记为接受的答案