Silverlight三态复选框数据绑定到对象属性计算值

Silverlight三态复选框数据绑定到对象属性计算值,silverlight,data-binding,binding,checkbox,Silverlight,Data Binding,Binding,Checkbox,因此,我有一个小问题,使这项工作: 我有一个silverlight客户端应用程序,它具有自定义的usercontrol和双向绑定的三态复选框 用户更改复选框值后,属性的基础函数将值转换为整数: -1 nothing 0 false 1 true 用户从对话框保存数据后,所有数据(复杂对象)都将被序列化并发送到webservice并存储在SQL db中 当客户机请求从webservice返回已保存的数据时,它会返回该对象 当我尝试将返回的反序列化对象(EA)绑定回复选框时

因此,我有一个小问题,使这项工作:

  • 我有一个silverlight客户端应用程序,它具有自定义的usercontrol和双向绑定的三态复选框
  • 用户更改复选框值后,属性的基础函数将值转换为整数:

       -1 nothing
        0 false
        1 true
    
  • 用户从对话框保存数据后,所有数据(复杂对象)都将被序列化并发送到webservice并存储在SQL db中

  • 当客户机请求从webservice返回已保存的数据时,它会返回该对象
  • 当我尝试将返回的反序列化对象(EA)绑定回复选框时,如下所示:

           With cC
               Dim b As New Binding("AllowedTo.Create")
               b.Source = EA
               b.Mode = BindingMode.TwoWay
               .SetBinding(CheckBox.IsCheckedProperty, b)
           End With
    
  • 只有当值为真或假时,它才正常工作,但如果值为空,因为复选框是三态,它应该转到第三态-未定义-带减号[-],但它没有。 它只是停留在false状态—空的,没有检查,就像它是false一样

    有什么问题吗


    对不起,我的英语不是我的母语,因为这种技术对复选框来说是很自然的,我建议创建一个自定义控件来处理该布尔值的3种不同状态。

    不要使用整数,使用一个可为空的Bool(Bool?)。双向绑定工作正常,它可以转换:

    • 选中==真
    • 未选中==错误
    • 不确定==null
    序列化对于可为NULL的bool不是问题,事实上,您甚至不必检查SQL字段值是否为NULL,因为它将是一个有效状态,并且在SQL数据库中使用bool字段甚至可以稍微减小它的大小;)


    如果您的数据库已设置,但无法更改,请编写一个转换器,将整数转换为可为null的布尔值以进行绑定,时间不应超过2分钟。

    我没有提到,我已经有属性“AllowedTo.Create”,其类型为nullable(布尔值)。它从该整数属性来回转换该值。但当它什么也不返回时,复选框应该显示为不确定,但它只是停留在未检查状态。如果我的属性返回true或false,那么它可以工作1)属性不是转换器。。。使用转换器在绑定时转换值。2)它不能返回“NOTHING”,正如您所说,它可以返回值或抛出表达式,值可以为null,但它不是NOTHING 3)我非常确定绑定到nullable bools 2 way的三态复选框在Silverlight中工作,因为我正在开发需要它的解决方案。也许您使用的是一个相当旧的SL版本?如果我没记错的话,当我在SL4.4中开发这个项目时,如果它仍然不起作用,那么你的代码中肯定还有另一个错误,我无法通过这种方式帮助你,发布你的复选框、转换器和它绑定的属性的XAML,然后我会查看它并帮助你找出问题所在。