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)

在 WPF / C# 中选择绑定项目后维护组合框文本

MVVM:将带有 Observable 集合的命令绑定到 Listbox 并从文本框中获取值

WPF:如何使用 MVVM 将命令绑定到 ListBoxItem?

MVVM WPF:为啥在运行应用程序时更新文本框中的文本后模型中的属性始终为空?

WPF中MVVM子窗口修改数据问题