具有类似RadioButton IsChecked属性功能的自定义控件

时间:2013-06-03 12:19:21

标签: c# .net wpf wpf-controls

我正在尝试了解IsCheckedRadioButton属性的工作原理,因为我正在构建一个具有类似行为的自定义控件。

我需要的信息是RadioButton在检查其他IsChecked时自动将false转为RadioButton的方式。

参见示例:

<StackPanel>
    <RadioButton Content="Info 1" IsChecked="True" />
    <RadioButton Content="Info 2" />
</StackPanel>

如果我使用RadioButton点击"Info 2",则其他广播将自动转为未选中。

但是如果收音机是这样的不同StackPanel

<StackPanel>
    <StackPanel>
        <RadioButton Content="Info 1.1" IsChecked="True" />
        <RadioButton Content="Info 1.2" />
    </StackPanel>
    <StackPanel>
        <RadioButton Content="Info 2.1" IsChecked="True" />
        <RadioButton Content="Info 2.2" />
    </StackPanel>
</StackPanel>

点击Info 1.1后,Info 2.1仍然会被检查。

我的自定义控件需要此行为。最干净的方法是如何做到的?

2 个答案:

答案 0 :(得分:0)

RadioButton是一个控件,通常用作一组RadioButton控件中的项目。 RadioButton控件继承自ToggleButton类,而ToggleButton类继承自ButtonBase。因为RadioButton控件继承自ToggleButton,所以它们允许用户更改选择。 当RadioButton元素被分组时,按钮是互斥的。用户可以在RadioButton组内一次只选择一个项目。 在您的示例中,具有内容Info 1.1和Info 1.2的单选按钮因此共享相同的父控件 它们被分组,这意味着一次仅检查1个单选按钮,而具有内容Info 1.1和Info 2.1的单选按钮不共享相同的父控件,这意味着它们未被分组 因此,当选中Info 1.1时,它不会对Info2.1产生任何影响

答案 1 :(得分:0)

您可以从RadioButton派生自定义控件。这样,只要您单击与同一父项分组的复选框之一,就可以切换IsChecked的值。