我需要能够获取和设置文本框的文本,但我不希望文本框文本中的每个更改都更新我的viewmodel中的字符串。在我看来,将字符串绑定到文本框的文本属性几乎与更新文本框的textchanged事件中的字符串效率低或者我错了吗?
答案 0 :(得分:2)
绑定到TextBox.Text
的默认UpdateSourceTrigger是LostFocus
,这意味着只有在离开TextBox时才会更新viewmodel中的字符串。
当然,如果你做这样的事情
<TextBox Text="{Binding Path=ItemName, UpdateSourceTrigger=PropertyChanged}" />
然后每次文本框中的内容发生变化时,您的字符串都会更新。所以,是的,它“几乎与更新文本框的textchanged事件中的字符串一样低效。”
尽管如此,我在这里看不到现实世界的问题:即使你有一个非常快速的输入用户,更新内存中的字符串也不是一个需要花费大量时间的操作。实际上,处理TextBox本身的用户输入(显示键入的字符,如果到达框的末尾则向左滚动文本等)也需要相当多的处理,所以我不认为更新你的字符串造成了这种不合理的额外负担。
答案 1 :(得分:1)
我认为这取决于你定义的效率。对我来说,能够在XAML级别声明性地声明双向绑定比处理文本更改事件并将自己附加到视图模型的属性更改以及来回复制内容更有效。
我为什么要这样做?
除此之外,默认的绑定行为是焦点丢失......