0

wpfからdialogdataにアクセスすることについて質問があります/私は持っていますProgressDialog :System.Windows.Window そして私は次のようにOnButtonClickでそれを呼び出しています:

        void OnButtonClick(object sender, RoutedEventArgs e)
        {   
            ProgressDialog dlg = new ProgressDialog("");
            //dlg.AutoIncrementInterval = 0;
            LibWrap lwrap = new LibWrap();
            DoWorkEventHandler handler = delegate { BitmapFrame bf = lwrap.engine(frame); };
            dlg.CurrentLibWrap = lwrap;
            dlg.AutoIncrementInterval = 100;
            dlg.IsCancellingEnabled = true;
            dlg.Owner = Application.Current.MainWindow;
            dlg.RunWorkerThread(0, handler);
}

問題は、DialogResultがOKかどうかこの関数(OnButtonClick)をチェックインする方法(言い換えると、実行終了後にdlgの内部フィールドにアクセスする方法)ですか?

4

1 に答える 1

1

DialogResult通常は内部フィールドではなく、むしろパブリックプロパティであるため、dlg.DialogResult(Windowから継承する場合は)問題ないはずです。これをboolにキャストする必要があります。

ウィンドウをどこでも開いていないようですShowDialog。戻り値を使用するDialogResultと、自動的にウィンドウが閉じられ、呼び出し元のスレッドがブロックされます。

var result = (bool)dlg.ShowDialog();

非モーダルダイアログが必要な場合は、イベントShowのサブスクライブを使用して、そこで確認できます。ClosedDialogResult

dlg.Closed += (_,__) =>
{
    var result = (bool)dlg.ShowDialog();
    // Do something with it.
}
dlg.Show();

もちろん、どちらの場合もダイアログでプロパティを設定する必要があります。Alt+f4のようなデフォルトのアクションはそれをfalseに設定します。

于 2011-12-13T16:06:19.497 に答える