我有一个关于从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正常(换句话说 - 如何在完成执行后访问dlg' s内部字段),如何检查此函数(OnButtonClick)?
答案 0 :(得分:1)
DialogResult
通常不是内部字段,而是一个相当公共的属性,所以dlg.DialogResult
应该没问题(假设它继承自Window),你需要将它强制转换为bool。
我没有看到你在任何地方打开窗口,如果你使用ShowDialog
,返回值自动为DialogResult
,并且调用线程会阻塞直到它被关闭。
var result = (bool)dlg.ShowDialog();
如果您需要非模态对话框,可以使用Show
订阅Closed
事件并检查DialogResult
那里。
dlg.Closed += (_,__) =>
{
var result = (bool)dlg.ShowDialog();
// Do something with it.
}
dlg.Show();
当然,对话框需要在任何一种情况下设置属性。 Alt + f4等默认操作将其设置为false。