带有Bool的IValueConverter的ListBox To YesNo ...几乎可以工作,但并不完全

时间:2011-11-29 04:32:25

标签: silverlight binding mvvm ivalueconverter

我正在尝试使用列表框显示是/否并绑定到我的Sql Server数据库中的位字段。
我的代码(特别是我的绑定)看起来是否正确?

使用它时,它可以用于创建带有Yes(true)语句或No(false)语句的记录,我甚至可以在数据库中将No(false)更新为Yes(true)....但我不能编辑是(真)到否(假)...如果我调试一切看起来不错,直到我点击我的RiaService,然后使用Sql Profiler,该字段没有更新。

哦是的,如果我将相同的代码绑定到varchar字段并排除转换器,那么一切正常。

public class ConvertBoolToYesNo : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null)
                return null;
            string outValue;
            bool inValue = (bool)value;

            outValue = inValue ? "Yes" : "No";

            return outValue;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null)
                return null;
            bool? outValue;
            string inValue = (string)value;
            inValue = inValue.Trim();

            if (inValue == "Yes")
            {
                outValue = true;
            }
            else
                if (inValue == "No")
                {
                    outValue = false;
                }
                else
                {
                    return DependencyProperty.UnsetValue;
                }
        return outValue;
    }
<ListBox x:Name="lbCounselExempt"
 ItemsSource="{Binding Path=Choices}"
 DisplayMemberPath="Name"                                 
 SelectedValue="{Binding Path=Model.CounselExempt, Mode=TwoWay,Converter={StaticResource ConvertBoolToYesNo}}"
 SelectedValuePath="Name"
 Style="{StaticResource RadioButtonList}" /> 

1 个答案:

答案 0 :(得分:0)

如果您可以调试它并在调用RIA服务之前看到值已更改,那么它不是值转换器问题。将对象传输/序列化到服务器端的可能性更大。