2013-01-02 50 views
0

我有一个关于我的Silverlight5和MVVM模式的问题..如何在silverlight mvvm中实现多个Radiobutton数据绑定?

在我的用户的窗口,我有2所单选按钮控制,我已经用分组的GroupName="sex"控制单选按钮一起。

语法是:

<RadioButton IsChecked="{Binding EntityValue,Mode=TwoWay}" Content="Male" 
      GroupName="Sex" 
      Visibility="{Binding DataTypeID, Converter={StaticResource radioconverter}}"/> 

<RadioButton IsChecked="{Binding EntityValue,Mode=TwoWay}" Content="Female" 
      GroupName="Sex" 
      Visibility="{Binding DataTypeID, Converter={StaticResource radioconverter}}"/> 

我插入了检查值,使用实体框架成功的数据库。

例如:我的数据库将是这个样子:

CustomerID | CustomerName | EntityValue | 
------------------------------------------ 
1   | raj   | Male 
2   | reena  | Female 

数据库名称是:CDetails

如果我有选择customerID=1意味着价值Male绑定到我的radioButton1

如果我选择了customerID=2意味着值Female被绑定到我的radioButton2

这怎么可能?

回答

1

你需要写一个转换器,以改变EntityValue一个布尔值和传递参数对于您希望它返回真值:

<RadioButton IsChecked="{Binding EntityValue, Mode=TwoWay, 
         Converter={StaticResource MyConverter}, 
         ConverterParameter=Male}" 
      Content="Male"/> 

<RadioButton IsChecked="{Binding EntityValue, Mode=TwoWay, 
         Converter={StaticResource MyConverter}, 
         ConverterParameter=Female}" 
      Content="Female"/> 

然后转换器(假设你的男/女是一个字符串 - 如果没有,则更换演员表):

public class MyConverter: IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string input = (string)value; 
     string test = (string)parameter; 
     return input == test; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value == null || !(value is bool)) 
     { 
      return string.Empty; 
     } 
     if (parameter == null || !(parameter is string)) 
     { 
      return string.Empty; 
     } 
     if ((bool)value) 
     { 
      return parameter.ToString(); 
     } 
     else 
     { 
      return string.Empty; 
     } 
    } 
}  
+0

ChrisF ..非常感谢.. ..对我有用.. U保存了我的时间......谢谢.. –