WPF MVVM从入门到精通6:RadioButton等一对多控件的绑定
2021-06-08 20:06
?
WPF MVVM从入门到精通1:MVVM模式简介
WPF MVVM从入门到精通2:实现一个登录窗口
WPF MVVM从入门到精通3:数据绑定
WPF MVVM从入门到精通4:命令和事件
WPF MVVM从入门到精通5:PasswordBox的绑定
WPF MVVM从入门到精通6:RadioButton等一对多控件的绑定
WPF MVVM从入门到精通7:关闭窗口和打开新窗口
WPF MVVM从入门到精通8:数据验证
完整示例代码下载LoginDemo
?
当我们要进行性别这一属性绑定的时候,我们会发现,两个RadioButton控件都跟一个Gender属性关联。其实我们在绑定控件时还会遇到这样一个问题:属性是一个bool类型,但需要绑定控件的Visibility属性。这个问题也可以在本文介绍的方法得到解决。
控件在绑定时,是可以设置一个Converter的。Converter有两个方法,分别是Convert和ConvertBack。Convert用于将数据格式化之后,显示到控件上。而ConvertBack就是在界面端修改了控件状态,数据应该如何变化。
以下是一个比较通用的RadioButton的Converter:
using System;
using System.Globalization;
using System.Windows.Data;
namespace LoginDemo.ViewModel.Common
{
public class CheckConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || parameter == null)
{
return false;
}
string checkvalue = value.ToString();
string targetvalue = parameter.ToString();
bool r = checkvalue.Equals(targetvalue);
return r;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || parameter == null)
{
return null;
}
if ((bool)value)
{
return parameter.ToString();
}
return null;
}
}
}
在XAML处,需要先增加Converter的资源:
然后RadioButton的代码修改如下:
ViewModel里增加的代码就没什么新意了:
///
/// 性别
///
public int Gender
{
get
{
return obj.Gender;
}
set
{
obj.Gender = value;
this.RaisePropertyChanged("Gender");
}
}
这样绑定以后,当Gender=2时,性别女的单选框会被选中;当性别男的单选框被选中后,Gender会变成1。
文章标题:WPF MVVM从入门到精通6:RadioButton等一对多控件的绑定
文章链接:http://soscw.com/essay/92361.html