ホームページ > バックエンド開発 > C++ > MVVM パターンを使用して WPF でページ ナビゲーションを実装するにはどうすればよいですか?

MVVM パターンを使用して WPF でページ ナビゲーションを実装するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-13 19:36:42
オリジナル
872 人が閲覧しました

How to Implement Page Navigation in WPF Using the MVVM Pattern?

MVVM パターンを使用して WPF でページ ナビゲーションを実装する

WPF でのページ ナビゲーション

異なるページまたは画面間を移動することは、WPF アプリケーションを開発する際の一般的なニーズです。これは、MVVM (Model-View-ViewModel) などのさまざまな方法で実現できます。

MVVM メソッド

MVVM は、アプリケーションのロジックをさまざまなコンポーネント (モデル、ビュー、ビュー モデル) に分離する設計パターンです。この場合、ビューは UI の表示を担当し、モデルは基礎となるデータを表し、ビュー モデルは 2 つの間の仲介者として機能し、モデルのデータをビューに適した形式に変換します。

使用法

MVVM を使用してページ ナビゲーションを実装するには:

  • MainWindow.xaml:

    • ContentControl を使用して現在のページをホストします。
    • ページ ビュー モデルに対応するキーを使用して、ページ テンプレートを DataTemplates に読み込みます。
    • ContentControl の Content プロパティを View Model の SelectedPage プロパティにバインドします。
  • ページモデル:

    • ページ モデルをユーザー コントロールまたは DataTemplate として作成します。
  • ビューモデル:

    • IPage を実装し、ページ固有のプロパティ (タイトルなど) を公開するビュー モデルをページごとに作成します。
  • MainViewModel:

    • ページとナビゲーションを管理する MainViewModel を実装します。
      • ページ名とそれに対応するビューモデルの辞書を保持します。
      • ページを選択するためのコマンド (SelectPageCommand) を提供します。
  • SelectPageCommand:

    • このコマンドは、目的のページを表すパラメータを受け取ります。
    • 実行すると、指定されたページのビュー モデルを辞書から取得し、それを SelectedPage に設定します。これにより、ビューがトリガーされて、対応するテンプレートが表示されます。

実績

<code class="language-xml"><ContentControl Content="{Binding SelectedPage}"></ContentControl></code>
ログイン後にコピー
<code class="language-csharp">public ICommand SelectPageCommand => new RelayCommand(SelectPage);

...

public void SelectPage(object param)
{
    if (param is PageName pageName && Pages.TryGetValue(pageName, out IPage selectedPage))
    {
        SelectedPage = selectedPage;
    }
}</code>
ログイン後にコピー

このアプローチは、ページをナビゲートするための簡潔かつ柔軟な方法を提供し、ページの追加または削除を容易にし、コードの重複を減らします。

以上がMVVM パターンを使用して WPF でページ ナビゲーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート