使用实现ICommand的命令绑定属性PropertyChange

时间:2015-10-30 11:37:01

标签: c# wpf mvvm

我在wpf应用程序中实现MVVM模式。我们有一个文本框,可以在KeyUp事件上调用事件处理程序。我使用ViewModel中的属性tb_property绑定了该文本框的文本。我的想法是让ViewModel实现INotifyPropertyChange并绑定执行什么事件处理程序所做的命令对象,并将ICommand实现到该tb_property上的更改。这是个好主意,我该怎么做?我试图摆脱View中的大部分事件。先感谢您。

1 个答案:

答案 0 :(得分:2)

是的,根据您使用的MVVM框架,您可以将控件的事件绑定到viewmodel上的iCommand。

我使用MVVM灯,因此他们在realaycommand中有一个内置版本。然后我按照以下方式绑定控件的事件:

将以下内容添加到usercontrol / window开启标记中(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