作者:郭城镣 | 来源:互联网 | 2023-09-12 13:55
单个 CheckBox
![](https://img.php1.cn/3cd4a/1eebe/cd5/bcafc120671304eb.webp)
XAML:
ViewModel:
public class VMTempTest : ViewModelBase
{
private String singleRadio;
///
/// 单选框相关
///
public String SingleRadio
{
get { return singleRadio; }
set { singleRadio = value; RaisePropertyChanged(() => SingleRadio); }
}
private Boolean isSingleRadioCheck;
///
/// 单选框是否选中
///
public Boolean IsSingleRadioCheck
{
get { return isSingleRadioCheck; }
set { isSingleRadioCheck = value; RaisePropertyChanged(() => IsSingleRadioCheck); }
}
}
说明:注意这边使用到了两个属性: SingleRadio,IsSingleRadioCheck,一个用于显示单选框内容,一个用于表示是否选中
组合单选框
![](https://img.php1.cn/3cd4a/1eebe/cd5/7d7ef3f69d479716.webp)
XAML:
Command="{Binding DataContext.RadioCheckCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ItemsControl}}">
Models:
public class CompBottonModel : ObservableObject
{
public CompBottonModel()
{
//构造函数
}
private String content;
///
/// 单选框相关
///
public String Content
{
get { return content; }
set { cOntent= value; RaisePropertyChanged(() => Content); }
}
private Boolean isCheck;
///
/// 单选框是否选中
///
public Boolean IsCheck
{
get { return isCheck; }
set { isCheck = value; RaisePropertyChanged(() => IsCheck); }
}
}
ViewModel:
public class VMTempTest : ViewModelBase
{
public VMTempTest()
{
RadioButtOns= new List()
{
new CompBottonModel(){ COntent="苹果", IsCheck = false },
new CompBottonModel(){ COntent="香蕉", IsCheck = false },
new CompBottonModel(){ COntent="梨", IsCheck = false },
new CompBottonModel(){ COntent="樱桃", IsCheck = false },
};
}
private List radioButtons;
///
/// 组合单选框列表
///
public List RadioButtons
{
get { return radioButtons; }
set
{
radioButtOns= value; RaisePropertyChanged(() => RadioButtons);
}
}
private CompBottonModel radioButton;
///
/// 组合单选框 选中值
///
public CompBottonModel RadioButton
{
get { return radioButton; }
set { radioButton = value; RaisePropertyChanged(() => RadioButton); }
}
private RelayCommand radioCheckCommand;
///
/// 单选框命令
///
public RelayCommand RadioCheckCommand
{
get
{
if (radioCheckCommand == null)
radioCheckCommand = new RelayCommand(() => ExcuteRadioCommand());
return radioCheckCommand;
}
set { radioCheckCommand = value; }
}
private void ExcuteRadioCommand()
{
RadioButton = RadioButtons.Where(p => p.IsCheck).First();
}
}
这边使用了 ItemsControl,可以根据模板来定义内容,我们在模板中放置我们需要用到的内容。这边需要注意的是:GroupName 用一样的,来代表这是一个单选控件组合。
这边有是三个属性进行绑定相关:
RadioButtons:单选框列表数据(循环绑定);Content:单选框显示的内容;IsCheck:单选框的是否选中。
参考:
https://www.cnblogs.com/wzh2010/p/6425060.html