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