将属性PropertyChange与实现ICommand的命令绑定
本文关键字:命令 绑定 ICommand 实现 属性 PropertyChange | 更新日期: 2023-09-27 18:19:57
我正在wpf应用程序中实现MVVM模式。我们有一个文本框,它调用KeyUp事件的事件处理程序。我将该文本框的文本与ViewModel中的属性tb_property绑定。我的想法是让ViewModel实现INotifyPropertyChange,并将执行事件处理程序的操作并实现ICommand的命令对象绑定到tb_property上的更改。这是个好主意吗?我该怎么做?我正试图从View中删除大部分事件。提前谢谢。
是的,根据您使用的MVVM框架,您可以将控件的事件绑定到视图模型上的iCommand。
我使用MVVM灯,所以他们有一个内置的realay命令来满足这样的条件。然后,我以以下方式绑定控件的事件:
将以下内容添加到您的usercontrol/window-opening标记中(cmd使用icommand的mvvm framworks实现):
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="http://www.galasoft.ch/mvvmlight"
然后我将命令绑定添加到控件中,如:
<TextBox Grid.Row="1" Text="{Binding tb_property, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="YourEvent">
<cmd:EventToCommand Command="{Binding YourCommandPropertyOnVIewModel}" CommandParameter="OptionalCommandParameter"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
通过这种方式,您可以将所有的"事件"移动到视图模型中,我喜欢这种方式,因为其他控件可以使用相同的命令。
希望这能帮助
JK