我对Silverlight5和MVVM模式有疑问..
在我的usercontrol窗口中,我有2个radiobutton控件,我使用GroupName="sex"
将radiobutton控件组合在一起。
语法是:
<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}}"/>
我已成功使用Entity Framework将检查的值插入数据库。
例如:我的数据库将如下所示:
CustomerID | CustomerName | EntityValue |
------------------------------------------
1 | raj | Male
2 | reena | Female
数据库名称为:CDetails
如果我选择了customerID=1
,则意味着值Male
要绑定到radioButton1
和
如果我选择了customerID=2
,则意味着值Female
要绑定到radioButton2
怎么可能?
答案 0 :(得分:1)
您需要编写一个转换器来将EntityValue
更改为布尔值,并为您希望它返回true的值传递一个参数:
<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;
}
}
}