WPF MVVM从入门到精通6:RadioButton等一对多控件的绑定

当我们需要进行性别这一属性的绑定的时候,就会发现,两个 RadioButton控件都跟一个Gender属性关联。其实我们在绑定控件时还会遇到这样一个问题:属性是一个bool类型,但需要绑定控件的Visiility属性。这个问题也可以在本文介绍的方法得到解决。
控件在绑定时,是可以设置一个Converter的。Convefrter有两个方法,分别是Covnert和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 parameer,CultureInof culture)
		{
			if(value==null||parameter==null)
			{
				return null;
			}
			if((bool)value)
			{
				return parameter.ToString();
			}
			return null;
		}
	}
}
在xaml处,需要先增加Converter的资源
<Window.Resources>
	<c:CheckConverter x:Key="CheckConverter" />
</Window.Resources>	 

然后RadioButton代码修改如下

<RadioButton Grid.Row="2" Grid.Column="0" Content="男" IsChecked="{Binding Gender,Mode=TwoWay,Converter={StaticResource CheckConverter},ConverterParameter=1}" />
<RadioButton Grid.Row="2" Grid.Column="1" Content="女" IsChecked="{Binding Gender,Mode=TwoWay,Converter={StaticResource CheckConverter},ConverterParameter=2}"/>

ViewModel里增加的代码就没什么新意了:

/// <summary>
/// 性别
/// </summary>
public int Gender
{
    get
    {
        return obj.Gender;
    }
    set
    {
        obj.Gender = value;
        this.RaisePropertyChanged("Gender");
    }
}

这样绑定以后,当Gender=2时,性别女的单选框会被选中;当性别男的单选框被选中后,Gender会变成1。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值