【问题标题】:Disable ConvertBack() on TwoWay binding when using UpdateSource()使用 UpdateSource() 时禁用双向绑定上的 ConvertBack()
【发布时间】:2011-07-21 08:54:30
【问题描述】:

我正在维护一个 SilverLight 应用程序,我不得不手动重新绑定一些 TextBoxes 的文本。

所以我使用:

myTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource(); 

问题是,要做到这一点,我的 TextBox 需要具有 TwoWay 绑定,所以我设置了它。 该控件使用非正统的 IValueConverter,它不应该执行 ConvertBack,但因为我有一个 TwoWay 绑定......它会被调用。

有没有办法禁用 ConvertBack(),而让 Convert() 完成它的工作?

谢谢 ;)

【问题讨论】:

  • 请发布您的 Xaml 和任何代码,以便我们提供实用(和经过测试)修复。

标签: silverlight binding


【解决方案1】:

您应该使用可以处理两个方向的转换器...

子类化现有转换器并让 ConvertBack 隐藏现有转换器(并返回无害的东西),而 Convert 只调用 base.Convert。

【讨论】:

  • IValueConverter 将字符串转换为 7 到 21 范围内的整数。所以 ConvertBack 不是一个选项。
  • 所以子类的 ConvertBack 应该只返回未更改的字符串。
  • ConvertBack 从 TextBox 获取整数作为参数,它没有字符串,它应该将该 int 转换为字符串,但这是不可能的。
  • 您是在认真告诉我您不能将 int 转换为字符串吗? :) 尝试在传递给转换器的值上返回 value.ToString()。如果您的意思是别的,请解释或发布您的代码和 XAML
【解决方案2】:

correct way 是在ConvertBack 中返回DependencyProperty.UnsetValue

【讨论】:

    猜你喜欢
    • 2013-01-03
    • 1970-01-01
    • 2015-08-27
    • 2015-12-07
    • 1970-01-01
    • 2014-02-12
    • 2011-03-29
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多