2013-02-01 136 views
2

我有一個基於視圖模型的WPF窗口。視圖模型包含可在運行時切換的子視圖模型。每個子視圖模型都有自己的命令。父視圖包含一個功能區,其中包含需要綁定到當前子視圖模式命令的按鈕。要切換視圖,我在使用數據模板的父視圖中使用內容控件。每個可能的子視圖都是綁定到適當的視圖模型(該位有效)的用戶控件。如何將控件的命令綁定到MVVM場景中的子Viewmodel命令?

<!-- Switchable area --> 
    <ContentControl Content="{Binding ChildViewModel}"> 
     <ContentControl.Resources> 
      <DataTemplate DataType="{x:Type vm:VersionsViewModel}"> 
       <embeddable:VersionsView /> 
      </DataTemplate> 
      <DataTemplate DataType="{x:Type vm:LockListViewModel}"> 
       <embeddable:LockListView /> 
      </DataTemplate> 
     </ContentControl.Resources> 
    </ContentControl> 

因此,例如,我的一個孩子viewmodels有一個刷新命令。我希望它出現在功能區按鈕的主視圖中。我已經嘗試將綁定設置爲以下XAML,但它永遠不會綁定,因此不會調用該命令。我究竟做錯了什麼?

<telerik:RadRibbonButton Size="Large" 
         Text="Refresh" 
         LargeImage="..\Images\Ribbon\32x32\Refresh.png" 
         Command="{Binding ChildView.RefreshCommand}" 
         telerik:KeyTipService.AccessText="R"/> 

在亞洲其他主要觀點我都爲來自子視圖模型數據綁定和工作正常,所以我真的很困惑!例如,這是我用來獲取窗口標題的綁定。

Title="{Binding ChildViewModel.Title,FallbackValue='My System'}" 
+2

的RibbonButtons命令屬性的結合具有路徑'ChildView.' ......對你的標題屬性什麼樣的結合有路徑'ChildViewModel.' ... –

+0

至少您可以使用Snoop檢查您的功能區的datacontext,以查看您的功能區的實際datacontext是什麼。 – blindmeis

回答

2
<telerik:RadRibbonButton Size="Large" 
         Text="Refresh" 
         LargeImage="..\Images\Ribbon\32x32\Refresh.png" 
         Command="{Binding ChildViewModel.RefreshCommand}" 
         telerik:KeyTipService.AccessText="R"/> 

你不綁定到視圖模型

+0

D'Oh!我又是一個白癡:)謝謝 - 我花了好幾年盯着它,沒有發現這個錯字。 –

相關問題