【问题标题】:Silverlight 4 ComboBox - Binding to Nullable data (tried TargetNullValue but not working as expected)Silverlight 4 ComboBox - 绑定到 Nullable 数据(尝试 TargetNullValue 但未按预期工作)
【发布时间】: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 时,会出现两个问题:

  1. ComboBox 中未选择任何选项(其空白)

  2. 从现在开始,ComboBox 绑定似乎被破坏了 - 我随后编辑的任何产品(包括具有非空 CategoryID 的产品)在 ComboBox 中没有选择任何内容(它仍然填充了所有类别 - 只是没有选定的项目)。

我看到了关于问题 #2(herehere)的报告,但我认为问题 #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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2010-09-19
      • 2012-08-17
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 2010-11-24
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多