将属性PropertyChange与实现ICommand的命令绑定



我正在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

最新更新