2011-01-09 16 views
0

(请注意 - 我是Silverlight初学者,正在寻找最简单的解决方案,例如,不涉及编写/安装替代品组合框控件!)Silverlight 4 ComboBox - 绑定到Nullable数据(尝试TargetNullValue但未按预期工作)

这是使用View Model(MVVM)方法的Silverlight 4应用程序的问题。我有一个简单的窗体来编辑“产品”对象。产品具有可为空的类别标识属性(int?)。一个ComboBox用于查看和设置CategoryID - 它绑定到一个ObservableCollection类别。产品还具有绑定到TextBoxes的非空值属性的数量。

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

使用非空的CategoryID编辑产品时,一切正常。然而,当空类别ID被发现,会出现两个问题:

  1. 没有选项在组合框(其空白)选择

  2. 组合框结合似乎从这时开始打破 - 任何产品我随后编辑(包含非空类别ID)在ComboBox中没有任何选择(它仍然填充了所有类别 - 只是没有选定的项目)。

我见过的问题#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> 

回答