ビューモデルに基づいたWPFのウィンドウがあります。ビューモデルには、実行時に切り替えることができる子ビューモデルが含まれています。各子ビューモデルには独自のコマンドがあります。親ビューには、現在の子viewmodelsコマンドにバインドする必要のあるボタンが付いたリボンが含まれています。ビューを切り替えるには、データテンプレートを使用する親ビューのコンテンツコントロールを使用します。可能な各子ビューは、適切なビューモデルにバインドするユーザーコントロールです(そのビットは機能します)。
<!-- 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>
たとえば、私の子ビューモデルの1つに更新コマンドがあります。これをメインビューのリボンボタンに表示したいと思います。次の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'}"