Windows Presentation Foundation程序设计指南中11页讲到:如果你在程序中查看Application对象的MainWindow Property会发现第一个调用Show的窗口会被当作策程序的主窗口.
审校者提出:似应是第一个被创建的窗口会被作为主窗口(Application的MainWindow属性).
对此笔者实验如下:
using System;
using System.Windows;
using System.Windows.Input;
namespace Petzold.ThrowWindowParty
{
class ThrowWindowParty: Application
{
static ThrowWindowParty app = new ThrowWindowParty();
[STAThread]
public static void Main()
{
app.Run();
}
protected override void OnStartup(StartupEventArgs args)
{
Window winMain = new Window();
winMain.Title = "Main Window";
winMain.MouseDown += WindowOnMouseDown;
for (int i = 0; i < 2; i++)
{
Window win = new Window();
win.Title = "Extra Window No. " + (i + 1);
win.Show();
}
winMain.Show();//特意将winMain延迟显示
Console.WriteLine(app.MainWindow.Title);//输出MainWindow属性
}
void WindowOnMouseDown(object sender, MouseButtonEventArgs args)
{
Window win = new Window();
win.Title = "Modal Dialog Box";
win.ShowDialog();
}
}
}
运行结果:
从而可见MainWindow属性指示的是第一个被创建的窗口 而不是 第一个Show的窗口.