C# 如何在WPF中一次只选择一个复选框?

C# 如何在WPF中一次只选择一个复选框?,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,我必须保留两个复选框,一次只能选择一个。但在我下面的代码中,两者都被选中了。我应该如何在WPF中实现我的功能 <StackPanel Orientation="Vertical" Name="spRoles"> <CheckBox Name="chkMale" Content="Male" /> <CheckBox Name="chkFemale" Content="Female" /> </StackPanel> 我只能使用复选框,不能

我必须保留两个复选框,一次只能选择一个。但在我下面的代码中,两者都被选中了。我应该如何在WPF中实现我的功能

<StackPanel Orientation="Vertical" Name="spRoles">

<CheckBox Name="chkMale" Content="Male" />
<CheckBox Name="chkFemale" Content="Female" />

</StackPanel>


我只能使用复选框,不能使用单选按钮。

在您的情况下,您应该使用单选按钮

允许复选框只选择一个,这是没有意义的


如果您仍然使用复选框,则复选框的整个概念都将消失。

请收听选择事件或类似事件,然后选中其他复选框

public void MaleOnSelection(object sender, EventArgs e)
{
    if(chkFemale.Selected)
        chkFemale.Selected=false;
}
显然,您必须对女性复选框执行相同的操作


无论如何,正如其他人所说,单选按钮会更好,如果您需要,您可以将其设置为复选框。在这种情况下,只需使用单选按钮而不是复选框。复选框主要用于多项目选择。

对于那些有目标的人,不同意只允许复选框选择一项是没有意义的。您可以为组中的每个复选框调用该方法

    private void uncheckCheckBoxes(object sender)
    {
        if (radioButtonEdit.IsChecked == true)
        {
            CheckBox currentcheckbox = (CheckBox)sender;

            foreach (var checkBox in ManyCheckBoxes.Children.OfType<CheckBox>().Where(cb => (bool)cb.IsChecked))
            {
                if (!currentcheckbox.Name.Equals(checkBox.Name))
                {
                    checkBox.IsChecked = false;
                }
            }
         }
    }

    private void checkbox1_Checked(object sender, RoutedEventArgs e)
    {
        uncheckCheckBoxes(sender);
    }
private void取消选中复选框(对象发送方)
{
如果(radioButtonEdit.IsChecked==true)
{
复选框currentcheckbox=(复选框)发件人;
foreach(manycheckbox.Children.OfType()中的var复选框,其中(cb=>(bool)cb.IsChecked))
{
如果(!currentcheckbox.Name.Equals(checkBox.Name))
{
checkBox.IsChecked=false;
}
}
}
}
私有无效复选框1\u已选中(对象发送方,路由目标e)
{
取消选中复选框(发送方);
}

为什么不能使用单选按钮?它们通常用于这类事情。此外,不使用单选按钮会让UI的用户感到困惑。至少如果我是那个用户,我希望能够选择多个复选框。有了单选按钮,很明显我只能选择一个。因为我必须使功能类似于gmail设置选项卡。在这里,您只能在选项上打一个勾号。这可能会有所帮助:。