将RoutedEvent转换为WPF中MVVM模式的命令

时间:2011-12-09 14:44:55

标签: wpf

如何将Checkbox.checked路由事件转换为MVVM模式的命令?

参考 - 考虑按钮单击路由事件,当我们为按钮分配命令时,button.click事件被视为命令。它执行相应的命令。

我用谷歌搜索,我得到了EventBehaviourFactory的解决方案。是否可以不使用EventBehaiourFactory?

1 个答案:

答案 0 :(得分:8)

这是WPF中的常见要求。最广泛使用的解决方案是使用Blend SDK中的Interactivity

将此xmlns命名空间添加到xaml:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

然后你可以这样做:

<CheckBox>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Checked">
            <i:InvokeCommandAction Command="{Binding MyCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</CheckBox>

当然,您需要将 System.Windows.Interactivity.dll 添加到您的项目中(至少对我而言)位于:C:\Program Files (x86)\Microsoft SDKs\Expression\Blend 3\Interactivity\Libraries\WPF\System.Windows.Interactivity.dll