私は何日も検索して試してみましたが、最終的にここで質問する必要があります. メインビューでビューを動的に切り替えられるようにしたい、MVVM Light を使用した Silverlight 5 アプリケーションがあります。
簡単にするために、2 つのボタンがあるとします。
Button1 が TestView1 に切り替わります。
Button2 は TestView2 に切り替わります。
<Button Content="TestView1" Grid.Column="1" Command="{Binding CallTestView1Command}" HorizontalAlignment="Left" Margin="185,17,0,0" VerticalAlignment="Top" Width="75"/>
<Button Content="TestView2" Grid.Column="1" Command="{Binding CallTestView2Command}" HorizontalAlignment="Left" Margin="280,17,0,0" VerticalAlignment="Top" Width="75"/>
私が行った方法は、リレーコマンドをボタンにバインドし、対応するビューの新しいビューモデルをインスタンス化することです。すなわち:
private RelayCommand _callTestView1Command;
public RelayCommand CallTestView1Command
{
get
{
return _callTestView1Command ??
(_callTestView1Command = new RelayCommand(() =>
{
CurrentView = ViewModelLocator.NinjectKernel.Get<TestViewModel1>();
}));
}
}
次に、CurrentViewmodel が新しいビューモデルに設定されます。MainView で、CurrentView を ContentControl にバインドしました。
<Border x:Name="displayedView" Grid.Row="2">
<ContentControl Content="{Binding CurrentView}" />
</Border>
CurrentView は変更されますが、ビューのコンテンツを実際に表示する代わりに、インスタンス化された ViewModel の名前空間を表示するだけなので、これは実際にはある程度機能します。
これまでのところ、主に次の情報源から得た知識を使用してきました。
http://rachel53461.wordpress.com/2011/05/28/switching-between-viewsusercontrols-using-mvvm/
ビューを ContentControl にロードし、ボタンをクリックしてプロパティを変更する
しかし、それらは私の問題を解決しないか、実際にビューを表示する方法をよく理解していません.:-(
GalaSoft の MVVM Light を使用して、Silverlight 5 でビューを正しく切り替える方法について、適切な説明がある人はいますか。
ありがとう