WPF MVVM 文本框文本绑定与 changedText 事件
Posted
技术标签:
【中文标题】WPF MVVM 文本框文本绑定与 changedText 事件【英文标题】:WPF MVVM textbox text binding vs changedText event 【发布时间】:2013-12-04 01:54:37 【问题描述】:我有绑定到视图模型的 Text 属性的文本框。 我已将 TextChanged 事件绑定到 viewmodel。
但问题是事件触发每个标志都添加到文本框(这很好),并且当文本框失去焦点时视图模型中的文本会刷新(这对我来说很糟糕)。
如何让这个 Text 属性在每次签名后刷新?
或者如何发送sender作为参数?我认为发件人会重新刷新数据。
我的交互 xaml:
<interactivity:Interaction.Triggers>
<interactivity:EventTrigger EventName="TextChanged">
<helpers:CustomCommandInvoker Command="Binding UnlockChangedCommand" />
</interactivity:EventTrigger>
</interactivity:Interaction.Triggers>
我正在使用 RelayCommand。
【问题讨论】:
【参考方案1】:对此有一个非常简单的答案;使用 UpdatePropertyTrigger=PropertyChanged。这将在每次更改字符时更新您的 VM 属性。不需要触发器或命令:-)
<TextBox Text="Binding ViewModelProperty, UpdateSourceTrigger=PropertyChanged"></TextBox>
阅读此处了解更多信息:http://msdn.microsoft.com/en-us/library/system.windows.data.updatesourcetrigger(v=vs.110).aspx
【讨论】:
绑定非常好,当我现在读到这篇文章时,我忍不住回退到旧的工作方法(事件处理程序等)似乎很合乎逻辑......谢谢 根据 Microsoft 文档,在文本框中使用 UpdateSoruceTrigger 会降低性能,使用时要小心。 docs.microsoft.com/en-us/dotnet/api/…以上是关于WPF MVVM 文本框文本绑定与 changedText 事件的主要内容,如果未能解决你的问题,请参考以下文章
WPF MVVM - 带文本框的简单绑定按钮(Icommand)
MVVM:将带有 Observable 集合的命令绑定到 Listbox 并从文本框中获取值
WPF:如何使用 MVVM 将命令绑定到 ListBoxItem?