【问题标题】:Databound nullable values not updated in Silverlight XAMLSilverlight XAML 中未更新的数据绑定可为空值
【发布时间】:2011-06-04 00:38:03
【问题描述】:

在我的 MVVM 项目中,我有两个文本框,其中一个绑定到我的对象的可空整数字段,另一个绑定到字符串字段。当视图加载时,如果我在绑定到字符串属性的文本框中输入任何值,我可以看到它的值被更新为对象的字符串属性。

但是,当我在绑定到对象的可为空整数字段的文本框中输入值时,就会出现问题。如果它是一个适当的整数值,那么该值将被更新。如果我在绑定到我的对象的可为空整数字段的文本框中放置一个字母数字字符串,或者如果我只是将其留空,那么我的对象的可为空整数字段不会得到更新。它仍然保留之前设置的任何内容。

例如。如果我在数字文本框中输入了数字“7”,它将更新为 7。现在,如果我将其从“7”更改为“7a”或“a7”或“asd”或将其留空。该值仍保持为 7,这是较早的值。

除了更改可空类型之外,是否有任何解决此问题的方法?

感谢您的宝贵时间...

【问题讨论】:

    标签: silverlight xaml data-binding


    【解决方案1】:

    如果您将文本框屏蔽为仅接受数值,您也可以使用:

    Text={Binding PropertyName, Mode=TwoWay, TargetNullValue=''}

    这将正确设置绑定的int?检测到空字符串时属性为 null。

    【讨论】:

      【解决方案2】:

      这里的问题是,当您在绑定到Nullable<Int32>TextBox 中输入empty stringalphabet values 时,未设置可为空的int 值。

      在这种情况下,将字符串值转换为整数值时绑定失败。并且在失败后它不会将值设置为 null,而只是保持旧值不变。您可以通过调试来确保发生这种情况。

      您可以做的是创建一个转换器来解决这个问题。此转换器尝试将字符串值转换为 int,如果失败,则返回 null,该值将设置为可为 null 的 int 值。

      【讨论】:

      • 谢谢。我已经添加了转换器。但是转换器的问题是它会返回一个空值,从而清除文本框。我希望用户看到他们输入了错误的值。清除文本框不会让他们受益......他们将不得不重新输入整个数字(就像您有时在表格上输入的那些 16+ 数字)
      猜你喜欢
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 2021-09-26
      • 2011-05-11
      相关资源
      最近更新 更多