WPF MVVM文本框文本绑定与changedText事件的区别

18

我有一个文本框,其Text属性绑定到ViewModel。 我将TextChanged事件绑定到了ViewModel。

但是问题在于,每次向文本框添加字符时事件都会触发(这很好),而当文本框失去焦点时,ViewModel中的Text刷新(对我来说这很糟糕)。

如何使Text属性在每输入一个字符后刷新?

或者如何将sender作为参数发送?我认为sender会有刷新后的数据。

我的交互式XAML:

<interactivity:Interaction.Triggers>
    <interactivity:EventTrigger EventName="TextChanged">
        <helpers:CustomCommandInvoker Command="{Binding UnlockChangedCommand}"   />
     </interactivity:EventTrigger>
 </interactivity:Interaction.Triggers>

我正在使用RelayCommand。

1个回答

57

这有一个非常简单的答案:使用UpdatePropertyTrigger = PropertyChanged。每次更改字符时,它将更新您的VM属性。无需触发器或命令:-)

<TextBox Text="{Binding ViewModelProperty, UpdateSourceTrigger=PropertyChanged}"></TextBox>

点击此处了解更多信息。


绑定非常好,我忍不住回到旧的工作方法(事件处理程序等),现在当我阅读这个时似乎很合乎逻辑..谢谢 - user1841243
根据微软文档,使用UpdateSourceTrigger在文本框中可能会降低性能,请在使用时小心。https://learn.microsoft.com/en-us/dotnet/api/system.windows.data.binding.updatesourcetrigger?view=netframework-4.8#System_Windows_Data_Binding_UpdateSourceTrigger - Freddykong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接