WPF中如何在弹出窗口后,主窗口不能操作(需要在弹出窗口关闭后才能操作),但主窗口后台本身设定的方法可以继续执行showdialog()在返回结果前,它后面的方法都不能执行,需要返回后才能执行。用show()吧,但主窗口需要从弹出窗口中的选择来获取值,并将值传给主窗口的TextBlock并显示出来,弹出窗口关闭前调用main window = new main();
window.name.Text = "123";来传值了,但关闭后主窗口的TextBlock:name并没有显示数据。
谁给点建议,实现以下功能:弹出窗口关闭后,把弹出窗口的值传给主窗口的让TextBlock控件显示出来,但主窗口在弹出窗口关闭前还可以继续执行自身的后台方法。麻烦大家帮帮忙!

解决方案 »

  1.   

    首先搞清楚一个概念,WPF中所谓的主线程就是App.Current.Dispatcher所在的Thread
    不会因为ShowDialog而不能运行后台操作
    从简单的角度来说,你可以通过App.Current.MainWindow as MainWindow来获取对象的指针
    而不是去new一个新的Window如果一定要用Show,则可以把MainWindow Disable掉,并将Show出来的Window的Owner设置为MainWindow
      

  2.   

    我现在就是show啊,但是弹出窗口的值传不了给主窗口
      

  3.   

    SubWindow dlg = new SubWindow();
    if(dlg.ShowDialog()??false){
      this.Textbox1.Content = dlg.ResultText;
    }你需要在SubWindow的OK中为ResultText赋值即可。
      

  4.   

    this.textblock1.Text = dlg.ResultText;
      

  5.   

    你的需求明显应该用ShowDialog实现Window1 dlg = new Window1();
    dlg.Closed += (s1, e1) => {
    this.textblock1.Text = dlg.ResultText;
    };
    dlg.Show();