5

次の問題の解決策が見つかりません。

caliburn micro の WindowManager でダイアログを開きます。

public void UserNew()
{
   this._windowManager.ShowDialog(new UserViewModel(this._windowManager));
}

ユーザーが [OK] ボタンでダイアログを閉じると、DialogResult が必要になります。WindowManager の ShowDialog メソッドが DialogResult を返さない...

誰でも私を助けることができますか?

4

3 に答える 3

9

私はビュー モデルを使用して、ダイアログで何が起こったかを判断する傾向があります。たとえば、通話から戻った後に問い合わせることができるIsCancelledプロパティを持つことができます。何かのようなもの:UserViewModelShowDialog

public void UserNew() {
    var userViewModel = new UserViewModel(this._windowManager);
    this._windowManager.ShowDialog(userViewModel);
    if (userViewModel.IsCancelled) {
        // Handle cancellation
    } else {
        // Handle other case(s)
    }
}
于 2012-05-15T16:07:18.520 に答える
0

WPF ダイアログは、DialogResults ではなく、null 許容の bool を返します。Caliburn の ShowDialog も返すbool?

MSDNから

通常、ダイアログ ボックスを使用すると、ダイアログ ボックスを閉じる前に表示されていたタスクをユーザーが受け入れるかキャンセルすることができます。ShowDialog は、アクティビティが受け入れられたかキャンセルされたかを示す Nullable ブール値を返します。戻り値は、ウィンドウが閉じる前の DialogResult プロパティの値です。詳細については、DialogResult を参照してください。

DialogResult上記は、 のboolDialogResult というプロパティを参照していますSystem.Windows.Window

より複雑なものを返したい場合は、ウィンドウで独自の enum プロパティを定義し、ダイアログが閉じたらその値を読み取るだけです。

于 2012-05-15T09:27:06.550 に答える