我弹出一个窗口,如果不存在MainWindow,则会创建一个MainWindow:
if (App.Current.MainWindow != null && App.Current.MainWindow.GetType() == typeof(MainWindow))
{
this.Close();
}
else
{
//main Window hasn't been created yet so create it!
MainWindow main = new MainWindow();
App.Current.MainWindow = main;
this.Close();
main.Show();
wndw = main;
}
如何引用MainWindow以便我可以在if语句之外使用它?
我希望能够main.txbox.Text = ....
等。
这是我尝试过的:
MainWindow main;
if
{...
}
else
{...
}
main= App.Current.MainWindow;
或MainWindow main = App.Current.MainWindow();
这些方法似乎都不起作用。我确定这很简单,我只是无法弄清楚语法。帮助
编辑:类似于我前面提到的this question,但不同,因为我在这里询问引用当前打开的窗口时的语法。类似的问题是指如何检测哪个窗口被打开。它们很相似,但我不想偏离主题。
答案 0 :(得分:5)
试试这种方式
var window = Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.IsActive);
答案 1 :(得分:0)
在某些基类或App.xaml.cs中创建:
public static Window ActivatedWindow {get;set;}
然后输入您的基类派生窗口或所有Window的激活事件:
第一个选项 - 个人窗口基类:
public class MetroToolWindowBase
{
public MetroToolWindowBase()
{
Activated += new EventHandler(MakeActive);
}
private void MakeActive(object sender, EventArgs e)
{
App.ActivatedWindow= this;
}
}
第二个选项 - 在Windows的激活事件中:
private void XWindow_Activated(object sender,EventArgs e)
{
App.ActivatedWindow= this;
}