2009-11-02 72 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