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 サイトの他の関連記事を参照してください。