我在WPF中有一个基于视图模型的窗口。 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>
例如,我的一个子视图模型有一个刷新命令。我希望它出现在功能区按钮的主视图中。我已经尝试将绑定设置为以下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'}"
答案 0 :(得分:2)
<telerik:RadRibbonButton Size="Large"
Text="Refresh"
LargeImage="..\Images\Ribbon\32x32\Refresh.png"
Command="{Binding ChildViewModel.RefreshCommand}"
telerik:KeyTipService.AccessText="R"/>
您没有绑定到视图模型