【问题标题】:Binding property PropertyChange with command that implements ICommand将属性 PropertyChange 与实现 ICommand 的命令绑定
【发布时间】:2016-01-30 19:47:50
【问题描述】:

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

【问题讨论】:

    标签: c# wpf mvvm


    【解决方案1】:

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

    我使用 MVVM 灯,因此他们在 realaycommand 中构建了这种情况。然后我将控件的事件绑定到以下方式:

    将以下内容添加到您的用户控件/窗口打开标记(cmd 使用 icommand 的 mvvm 框架实现):

    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

    【讨论】:

    • 这很有帮助。谢谢!
    猜你喜欢
    • 2011-09-28
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2017-11-08
    相关资源
    最近更新 更多