【发布时间】:2012-05-16 08:38:37
【问题描述】:
我有两种方式将字符串依赖属性绑定到 TextBox 的文本。
绑定如下所示:
Text="{Binding MyValue, Mode=TwoWay}"
我有一些代码在设置MyValue 的 OnKeyUp(在附加属性中)中触发。但与其将我的值应用到 Text 属性上,不如反其道而行之。
以下是事件的顺序:
- 用户输入如下文本字符串:0299900650
- 用户按下回车键。
- 在我的 on key up 中,我将 MyValue 设置为 2999 并将焦点移至下一个字段。
- MyValue 的 setter 触发并使用 2999 执行 NotifiyPropertyChanged
- LostFocus 着火了。
- MyValue 的设置器触发并使用 0299900650 执行 NotifiyPropertyChanged。
在我看来,我的价值并没有以某种方式回到“TextBox.Text”。当我失去焦点时,TextBox 正在使用它在 Text 属性中的值更新字符串的值(未更改的值,因为我的更改没有取回。)
这里有一些我不知道的 WPF 魔法吗?
注意:我已经仔细检查了我的绑定。 (除了他们从 UI 工作,所以我想他们去 UI 是正确的。)
注意二:当我说“用户输入一个字符串”时,它实际上是一个扫描的条形码。但由于我使用的是键盘楔形,就好像它是输入的一样。(但是,设置值的全部意义在于,如果用户扫描与打字相反,我会做一些不同的事情。)
更新:我发现这是由于另一个属性有副作用。我能够解决这个问题。
【问题讨论】: