我想创建radiobuttons作为treeviewitem的孩子,但是当我这样做时,我可以选择1个以上的radiobutton。当我选择1个radiobutton时,我无法取消选择它。
的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);
}
}
答案 0 :(得分:1)
选择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);
}
如果能解决您的问题,请记得将此标记为已接受的答案。
答案 1 :(得分:1)
您可以为每个单选按钮指定组名。
private void createRadioButtonsChildren(string content, TreeViewItem item)
{
TreeViewItem childRadio = new TreeViewItem()
{
Header = new RadioButton()
{
GroupName="Group1",
Content = content
}
};
item.Items.Add(childRadio);
}