WPF .net 4.0:文本框在与UpdateSourceTrigger = PropertyChanged绑定时重置插入位置

时间:2011-10-26 11:28:33

标签: wpf binding textbox

我有以下情况:

  • 绑定到属性的TextBox:
<TextBox Text="{Binding Settings.ClientName, UpdateSourceTrigger=PropertyChanged}"/>
  • 属性ClientName将其值存储在unterlying结构中,并且不会将Notifyon调用属性更改事件。相反,底层结构在处理完值后发送事件来刷新UI。如果触发了此类事件,则会正确设置ClientNameProperty并为此属性调用Notify。

问题是,如果我输入任何文本,插入符号似乎跳转到文本框中的第一个位置,实际上反转我输入的任何字符串。 “abcd”变成“dcba”

我注意到在迁移到Net 4.0后出现了这种情况。

那里有什么好的解决方案吗? 非常感谢

2 个答案:

答案 0 :(得分:0)

没有内置行为可以做到这一点。这个问题可能来自你的处理。

另外,如果您希望TextBox从代码隐藏和用户输入更改,您希望将其设置为双向:

<TextBox Text="{Binding Settings.ClientName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

修改
您还可以将ClientName设置为依赖项属性(vs2010中的propdp代码段)。这将自动完全支持绑定(/样式/动画),并使您可以在值更改时执行操作,并通过回调代理将其强制回来。
最后但同样重要的是,您仍然不需要设置类来实现INotifyPropertyChanged Here是一个可以开始的地方(msdn)。

答案 1 :(得分:0)

我怀疑您在WPF TextBox中遇到此行为更改:https://connect.microsoft.com/VisualStudio/feedback/details/588343/changed-behaviour-from-net-3-5-to-net-4-0-of-wpf-textbox-formatting-when-propertychanged-is-used-as-updatesourcetrigger(当PropertyChanged用作UpdateSourceTrigger时,将.Net 3.5的行为更改为WPF TextBox格式的.Net 4.0)