【发布时间】:2011-01-09 14:41:55
【问题描述】:
(请注意 - 我是 Silverlight 初学者,正在寻找最简单的解决方案,例如,不涉及编写/安装 ComboBox 控件的替代品!)
这是使用视图模型 (MVVM) 方法的 Silverlight 4 应用程序的问题。我有一个用于编辑“产品”对象的简单表单。产品有一个可以为空的 CategoryID 属性(int?)。 ComboBox 用于查看和设置 CategoryID - 它绑定到类别的 ObservableCollection。 Product 还具有绑定到 TextBox 的许多不可为空的属性。
我希望用户在 ComboBox 中看到没有类别的产品的“N/A”,并使用此“N/A”选项将 CategoryID 设置为 null。因此,我手动将 CategoryID=0 和 CategoryName="N/A" 的 Category 对象添加到集合中;然后我在 ComboBox 的 SelectedValue 绑定中设置 TargetNullValue=0。我的想法是 - 当 ComboBox SelectedValue 绑定到空 CategoryID 时,它将替换为零,因此选择“N/A”选项。
使用非空 CategoryID 编辑产品时,一切正常。但是,当找到空 CategoryID 时,会出现两个问题:
ComboBox 中未选择任何选项(其空白)
从现在开始,ComboBox 绑定似乎被破坏了 - 我随后编辑的任何产品(包括具有非空 CategoryID 的产品)在 ComboBox 中没有选择任何内容(它仍然填充了所有类别 - 只是没有选定的项目)。
我看到了关于问题 #2(here、here)的报告,但我认为问题 #1 应该可以解决问题。
要选择“N/A”选项,我缺少什么?
组合框的 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>
【问题讨论】:
标签: silverlight-4.0