ホームページ > バックエンド開発 > C++ > WPF の MVVM アーキテクチャで原則に違反せずに新しいウィンドウを開くにはどうすればよいですか?

WPF の MVVM アーキテクチャで原則に違反せずに新しいウィンドウを開くにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-29 16:03:12
オリジナル
864 人が閲覧しました

How Can I Open New Windows in WPF's MVVM Architecture Without Violating its Principles?

MVVM WPF で新しいウィンドウを開く: インターフェイスに関する考慮事項

ビュー モデル内から新しいウィンドウ インスタンスを作成することは MVVM 原則に違反しますが、一般的にはインターフェイスを実装して、ウィンドウを開く際の複雑さを抽象化します。ただし、インターフェイスを ChildWindow などの特定のウィンドウ タイプに緊密に結合すると、柔軟性が制限されます。

汎用インターフェイスのソリューション

この問題に対処するには、より汎用的なインターフェイスを検討してください。 design:

interface IWindowService
{
    void OpenWindow<TWindow>(object dataContext) where TWindow : Window, new();
}
ログイン後にコピー

このインターフェイスを使用すると、ウィンドウ タイプを汎用パラメーターとして指定でき、サービスが任意のウィンドウ タイプを処理できるようになります。 pass.

WindowService 実装

WindowService 実装は次のようになります。

class WindowService : IWindowService
{
    public void OpenWindow<TWindow>(object dataContext) where TWindow : Window, new()
    {
        var window = new TWindow();
        window.DataContext = dataContext;
        window.Show();
    }
}
ログイン後にコピー

モデルの使用状況の表示

ビューモデルでは、サービスを使用して新しいウィンドウを開くことができます。必要:

public void OpenChildWindowCommandExecute()
{
    _windowService.OpenWindow<ChildWindow>(this);
}
ログイン後にコピー

結論

この汎用インターフェイス アプローチを使用すると、MVVM 原則に違反することなく、ビュー モデルから新しいウィンドウを作成して開くことができます。あらゆる種類のウィンドウの使用を可能にすることで柔軟性を提供し、コードの再利用と保守性を促進します。

以上がWPF の MVVM アーキテクチャで原則に違反せずに新しいウィンドウを開くにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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