はじめに
WPF MVVM アプリケーションでは、ビュー間のナビゲーションが重要です。この記事は、ビュー 1 からビュー 2 への切り替え、およびその後のビューへの切り替えなど、あるビューから別のビューへの移動の問題を解決することを目的としています。
ViewModelLocator とナビゲーション
提供されているコード例は、ViewModelLocator パターンに焦点を当てています。ただし、その実装には疑問が生じます。コード内で言及されている CreateMain() 関数は未定義であるため、その使用方法とビューを切り替えるメカニズムについてユーザーが混乱しています。
簡素化された MVVM アプローチ
MVVM の実装を簡素化するために、INotifyPropertyChanged インターフェイスと DataTemplate を利用してビューを View Model にバインドする代替アプローチを提案します。
ステップ 1: BaseViewModel クラスを定義する
パブリック プロパティとコマンドを含む基本クラス BaseViewModel を作成します。すべてのビュー モデルはこのクラスを拡張できます。
<code class="language-csharp">public class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; }</code>
ステップ 2: App.xaml でバインディングを作成する
App.xaml で、ビュー モデルをそれぞれのビューに接続する DataTemplate を定義します。
<code class="language-xml"><DataTemplate DataType="{x:Type ViewModels:MainViewModel}"><MainView></MainView></DataTemplate></code>
ステップ 3: ContentControl を使用する
ContentControl を使用し、ViewModel プロパティにバインドして、ビュー モデルを表示します。
<code class="language-xml"><ContentControl Content="{Binding ViewModel}"></ContentControl></code>
ステップ 4: MainViewModel でビューを切り替える
ビューを切り替えるには、MainViewModel で ViewModel プロパティを設定します。
<code class="language-csharp">ViewModel = new PersonViewModel();</code>
ステップ 5: 他のビューから移動する
サブビューからのビュー ナビゲーションを有効にするには、MainViewModel でコマンドを定義し、バインディングを通じてコマンドにアクセスします。
<code class="language-csharp">public ICommand DisplayPersonView { get { return new ActionCommand(action => ViewModel = new PersonViewModel(), canExecute => !IsViewModelOfType<PersonViewModel>()); } }</code>
このアプローチでは、外部ツールキットに依存せずに、MVVM ナビゲーションを明確かつ簡潔に実装できます。
以上がWPF MVVM でシンプルなビュー ナビゲーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。