Silverlight 4 ComboBox-绑定到可为Null的数据(尝试了TargetNullValue,但未按预期工作) [英] Silverlight 4 ComboBox - Binding to Nullable data (tried TargetNullValue but not working as expected)

查看:7
本文介绍了Silverlight 4 ComboBox-绑定到可为Null的数据(尝试了TargetNullValue,但未按预期工作)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

(请注意-我是Silverlight初学者,正在寻找最简单的解决方案,例如不需要编写/安装ComboBox控件的替代品!)

这是使用视图模型(MVVM)方法的Silverlight 4应用程序的问题。我有一个用于编辑"产品"对象的简单表单。产品具有CategoryID属性,该属性可以为空(int?)。ComboBox用于查看和设置CategoryID-它绑定到类别的ObservableCollection。产品还具有许多绑定到TextBox的不可为Null的属性。

我希望用户在没有类别的产品的组合框中看到"N/A",并使用此"N/A"选项将CategoryID设置为空。因此,我手动将CategoryID=0和CategoryName="N/A"的Category对象添加到集合中;然后在ComboBox的SelectedValue绑定中设置TargetNullValue=0。我的想法是,当ComboBox SelectedValue绑定到空的CategoryID时,它将替换为零,因此选择"N/A"选项。

编辑具有非空CategoryID的产品时,一切正常。但是,当发现空CategoryID时,会出现两个问题:

  1. 组合框中未选择任何选项(空白)

  2. 从这一点开始,ComboBox绑定似乎被打破了--我随后编辑的任何产品(包括。具有非空CategoryID的)在组合框中未选择任何内容(其仍填充所有类别,只是没有选定的项)。

我看过问题#2(herehere)的报告,但我的印象是#1应该可以工作。

要选择"不适用"选项,我需要做些什么?

组合框的XAML:

<ComboBox x:Name="cboCategory" ItemsSource="{Binding colCategories, Mode=OneWay}" SelectedValuePath="CategoryID" DisplayMemberPath="CategoryName" SelectedValue="{Binding CurrentProduct.CategoryID, Mode=TwoWay, TargetNullValue=0}" Height="24" Width="344"></ComboBox>

推荐答案

我最终使用了一个转换器,它将绑定对象中的Null转换为组合框中的零,然后再转换回来...就像这里提到的http://forums.silverlight.net/forums/t/195627.aspx

这篇关于Silverlight 4 ComboBox-绑定到可为Null的数据(尝试了TargetNullValue,但未按预期工作)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆