我有一個基於視圖模型的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'}"
的RibbonButtons命令屬性的結合具有路徑'ChildView.' ......對你的標題屬性什麼樣的結合有路徑'ChildViewModel.' ... –
至少您可以使用Snoop檢查您的功能區的datacontext,以查看您的功能區的實際datacontext是什麼。 – blindmeis