WPF MVVM で単純なビュー ナビゲーションを実装します (外部フレームワークは必要ありません)
WPF MVVM アプリケーションのビュー ナビゲーションにより、異なるユーザー インターフェイス間で切り替えることができます。この記事では、MVVM Light などのフレームワークに依存せずにナビゲーションを実装する簡単な方法を検討します。
ビューモデルの設定
ベース ビュー モデル クラスを作成し、パブリック プロパティと INotifyPropertyChanged
インターフェイスを定義します。各具体的なビューモデル (例: MainViewModel
、PersonViewModel
、CompanyViewModel
) は、基本クラスから継承する必要があります。
ビューを View Model に接続します
App.xaml
で、ビューを View Model に関連付けるデータ テンプレートを宣言します。これにより、指定されたビュー モデルに基づいて適切なビューがレンダリングされます。
ContentControl でビューモデルを表示
メイン ビューの ViewModel
属性にバインドされた ContentControl
を使用して、さまざまなビューを表示します。ビューモデルを変更すると、表示されるビューが切り替わります。
サブビューからの移動
サブビューから移動するには、メイン ビュー モデルでコマンドを作成し、それをサブビューのボタンにバインドします。このコマンドを実行すると、メイン ビュー モデルの ViewModel
プロパティが変更され、ビューの切り替えがトリガーされます。
コード例
BaseViewModel:
<code class="language-csharp">public class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; }</code>
MainViewModel:
<code class="language-csharp">public class MainViewModel : BaseViewModel { private BaseViewModel viewModel; public BaseViewModel ViewModel { get { return viewModel; } set { viewModel = value; OnPropertyChanged(nameof(ViewModel)); } } public ICommand DisplayPersonView { get; } public MainViewModel() { DisplayPersonView = new RelayCommand(() => ViewModel = new PersonViewModel()); } protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } public class RelayCommand : ICommand { private readonly Action execute; public event EventHandler CanExecuteChanged; public RelayCommand(Action execute) { this.execute = execute; } public bool CanExecute(object parameter) => true; public void Execute(object parameter) => execute(); }</code>
App.xaml (DataTemplates):
<code class="language-xml"><Application.Resources> <DataTemplate DataType="{x:Type ViewModels:MainViewModel}"> <views:MainView/> </DataTemplate> <DataTemplate DataType="{x:Type ViewModels:PersonViewModel}"> <views:PersonView/> </DataTemplate> <DataTemplate DataType="{x:Type ViewModels:CompanyViewModel}"> <views:CompanyView/> </DataTemplate> </Application.Resources></code>
使用例:
<code class="language-xml"><ContentControl Content="{Binding ViewModel}"/></code>
この例では、INotifyPropertyChanged
インターフェースと単純な RelayCommand
クラスの実装が必要であることに注意してください。 OnPropertyChanged
メソッドと RelayCommand
クラスは、プロジェクトの実際の状況に応じて調整または置き換える必要があります。 views:
プレフィックスはビューの名前空間を表します。 ビューとビューモデルが正しく定義され、関連付けられていることを確認してください。
以上が外部フレームワークを使用せずに WPF MVVM でシンプルなビュー ナビゲーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。