WPF MVVM パターンで新しいウィンドウを開くためのベストプラクティス 質問する

WPF MVVM パターンで新しいウィンドウを開くためのベストプラクティス 質問する

これについてはしばらく考えていました...新しいウィンドウを開くビューモデルがそのビューの存在を認識していないことを念頭に置いて、別のビューモデルから新しいウィンドウ (ビューとビューモデル) を開くためのベスト プラクティスは何でしょうか (認識しているはずです)。

ありがとう。

ベストアンサー1

私は ViewModel コンストラクターを介して挿入されるアクション デリゲートを使用することを好みます。これにより、ユニット テスト中に簡単に検証できるようになります。

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        DataContext = new MainViewModel(() => (new Window()).Show()); // would be actual window
    }
}

public class MainViewModel
{
    private Action popupAction;
    public MainViewModel(Action popupAction)
    {
        this.popupAction = popupAction;
    }

    public ICommand PopupCommand { get; set; }

    public void PopupCommandAction()
    {
        popupAction();
    }
}

public class SomeUnitTest
{
    public void TestVM()
    {
        var vm = new MainViewModel(() => { });
    }
}

おすすめ記事