2009-11-02 74 views
1

我目前有一个主要的视图与一个按钮和一个ContentPresenter绑定到ViewModel属性是另一个视图(和相关联的ViewModel)。有没有办法从ContentPresenter中加载的控件中声明的处理程序路由命令?我的理由是主视图包含工具栏和内容展示者具有的内容。我正在使用Microsoft MVVM模板和生成的DelegateCommand类。MVVM控件之间的命令路由

<Window ...> 
    <Button x:Name="btnAction" Command="{Binding ActionCommand}" /> 
    <ContentPresenter Content="{Binding CurrentView}" /> 
</Window> 

回答

1

您应该创建一个命令对象,它是一类,无论是窗口和控制可以看到一个静态对象。

public static class MyCommands 
    { 
    public static RoutedUICommend CoolCommand .....; 
    } 

然后,你可以控制的Command属性绑定到的命令对象,例如:

<Button Command="cmd:MyCommands.CoolCommand" /> 

然后你只需要处理命令在使用的CommandBinding XAML元素的窗位结合。

<CommandBinding Command="cmd:MyCommands.CoolCommand" Executed="My_Handler" /> 
+0

似乎是个好主意。出于好奇,是否有共同的命令存储库用于将东西链接在一起是一种常见的WPF实践? – jwarzech 2009-11-03 14:10:06

+1

这不是将这些东西连接在一起的标准做法。当您需要将命令绑定到不以另一种方式共享绑定的命令处理程序时,更为常见的做法。这与内置的WPF注释使用的机制基本相同(如ApplicationCommands)。 – 2009-11-04 02:13:35