我的mainWindow需要订阅一个对象的一些事件.在创建MainWindow之前初始化对象.我想通过它的构造函数将此对象传递给mainWindow.
但是我无法弄清楚MainWindow构造函数的调用位置.可替换地我试图经由主窗口的成员函数来传递对象,但app.MainWindow被null前app.Run()被调用.在app.Run()调用之后,代码在程序终止之前不会返回.
另一个可能性是将对象存储在静态类中并具有MainWindow访问权限,但这似乎不必要地复杂化.
我意识到我可以在MainWindow构造函数中创建对象,但这意味着必须在那里放置很多其他代码,几乎整个Main函数.
如何将此对象传递给我的MainWindow?或者MainWindow构造函数是否可以作为整个程序的"Main"?
ean*_*son 24
你可以这样做.
首先进入App.xaml并删除此行StartupUri="MainWindow.xaml"以防止WPF自动显示MainWindow.
接下来右键单击App.xaml并选择View Code打开App.xaml.cs.在这个文件里面我们需要覆盖这个OnStartup事件.
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
}
Run Code Online (Sandbox Code Playgroud)
在里面OnStartup我们可以实例化我们MainWindow并展示它.
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MainWindow mw = new MainWindow();
mw.Show();
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用它来加载Constructor我们可以用来传递更多信息的替代方案.
App.xaml.cs
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MainWindow mw = new MainWindow(5);
mw.Show();
}
Run Code Online (Sandbox Code Playgroud)
MainWindow.xaml.cs
public MainWindow()
{
InitializeComponent();
}
public MainWindow(int number) : base()
{
}
Run Code Online (Sandbox Code Playgroud)