WPF 两个单选按钮互斥
时间: 2024-05-15 10:17:40 浏览: 159
在WPF中,你可以将两个单选按钮放到同一个单选按钮组中,然后将它们的IsChecked属性绑定到同一个布尔类型的依赖属性。这样,当用户选中其中一个单选按钮时,它会自动取消另一个单选按钮的选中状态。具体实现可以参考以下代码示例:
```
<StackPanel>
<RadioButton Content="Option A" GroupName="Options" IsChecked="{Binding Path=OptionAIsSelected, Mode=TwoWay}"/>
<RadioButton Content="Option B" GroupName="Options" IsChecked="{Binding Path=OptionBIsSelected, Mode=TwoWay}"/>
</StackPanel>
```
其中,GroupName属性指定了这两个单选按钮所属的同一个单选按钮组,IsChecked属性绑定到了两个布尔类型的依赖属性OptionAIsSelected和OptionBIsSelected。这两个属性之间互斥,只会有一个被选中。你可以在ViewModel中定义这两个属性,并在构造函数中初始化它们,代码示例如下:
```
public class MyViewModel : INotifyPropertyChanged
{
private bool _optionAIsSelected;
private bool _optionBIsSelected;
public MyViewModel()
{
_optionAIsSelected = true;
_optionBIsSelected = false;
}
public bool OptionAIsSelected
{
get { return _optionAIsSelected; }
set
{
if (value != _optionAIsSelected)
{
_optionAIsSelected = value;
OnPropertyChanged("OptionAIsSelected");
}
}
}
public bool OptionBIsSelected
{
get { return _optionBIsSelected; }
set
{
if (value != _optionBIsSelected)
{
_optionBIsSelected = value;
OnPropertyChanged("OptionBIsSelected");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
```
这里我们实现了INotifyPropertyChanged接口用于支持属性绑定。在构造函数中,我们将OptionAIsSelected属性初始化为true,OptionBIsSelected属性初始化为false。当用户选中其中一个单选按钮时,它会自动取消另一个单选按钮的选中状态,因为这两个属性之间是互斥的。
阅读全文