Control1と言うUserControlをロードするウィンドウがあります。ユーザーが新しい UserControl の特定のボタンをクリックすると、Control2 がウィンドウに読み込まれ、Control1 が消えるはずです。ここでも同じですが、ユーザーが次の UserControl のボタンをクリックすると、Control3 が読み込まれ、Control2 が消えます。たとえば、Control3 から Control2 に戻ることも可能です。
Window に最初のメイン UserControl をロードするのは簡単でした。これで十分です。しかし、ユーザーコントロール間の「ナビゲーション」を実装する方法に行き詰まっています。前にそのようなことをしたことはありません。WPF アプリに MVVM を使用しています。誰でもアイデアはありますか?
どうも。
編集:レイチェルの答えで、私は今、コマンドでこれを行い、コントロールを切り替えます:
<DataTemplate DataType="{x:Type ViewModel:MainControlViewModel}">
<my:MainControl />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModel:ProductsControlViewModel}">
<my:ProductsControl />
</DataTemplate>
<Grid>
<ContentControl Content="{Binding CurrentPageViewModel, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
MainControlViewModel と ProductsControl でほぼ同じ:
public ICommand LoadProductControlCommand
{
get
{
if (_loadProductControl == null)
_loadProductControl = new RelayCommand(LoadProductControl);
return _loadProductControl;
}
}
private void LoadProductControl(object notUsed)
{
_mainWindowViewModel = (MainWindowViewModel) Application.Current.MainWindow.DataContext;
_mainWindowViewModel.CurrentPageViewModel = new ProductsControlViewModel();
}
これは良い方法ですか、それとも別の方法にする必要がありますか? 私のアプリでは、ボタンはメイン ウィンドウではなくコントロール上にあるためです。