WPF MVVM路由事件

时间:2009-10-18 22:34:55

标签: wpf mvvm binding routed-events

关于M-V-VM和命令绑定(RelayCommand)的讨论很多,但是在绑定到M-V-VM模式中的处理程序的路由事件中没有涉及很多。我想找到最好的方法。

以下是使用自定义事件和绑定事件处理程序到VM的RoutedEvent绑定示例。

<Navigation:LeftNavigation x:Name="_leftNav" Margin="3"
            BindingHelper:EventHelper.RoutedEvent="Events:Customer.SelectionChanged"
            BindingHelper:EventHelper.EventHandler="{Binding SelectionChanged}" />

在我的Vm中,我会有一个与此类似的事件处理程序。

public void SelectionChanged(object sender, CustomerSelectionChangedArgs e)
{
    // Do something
}

这只是来自命令绑定的许多示例的概念。我如何才能使其适用于路由事件。

1 个答案:

答案 0 :(得分:2)

您可以查看this article作者实现类似语法的位置:

<Border Background="Yellow" Width="350" Margin="0,0,10,0" Height="35" CornerRadius="2" x:Name="test">
  <local:CommandBehaviorCollection.Behaviors>
    <local:BehaviorBinding Event="MouseLeftButtonDown" Action="{Binding DoSomething}" CommandParameter="An Action on MouseLeftButtonDown"/>
    <local:BehaviorBinding Event="MouseRightButtonDown" Command="{Binding SomeCommand}" CommandParameter="A Command on MouseRightButtonDown"/>
  </local:CommandBehaviorCollection.Behaviors>
  <TextBlock Text="MouseDown on this border to execute the command"/>
</Border>