0

我对我的 Silverlight5 和 MVVM 模式有疑问..

在我的用户控件窗口中,我有 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的值的方法MaleradioButton1

如果我选择了要绑定到我customerID=2的值的方法FemaleradioButton2

这怎么可能?

4

1 回答 1

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;
        }
    }
}    
于 2013-01-02T13:26:21.577 回答