【发布时间】:2012-05-23 12:29:57
【问题描述】:
在一个简单的 MVVM 方法中,我通过覆盖 App.xaml 中的 OnStartup 将 MainWindow 链接到 ViewModel。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MainWindow window = new MainWindow();
var viewModel = new MainWindowViewModel();
window.DataContext = viewModel;
window.Show();
}
}
当我运行 WPF 应用程序时,这会导致 MainWindow 的两个实例。当我覆盖启动时,它不应该只导致一个吗?
其中一个窗口显示正确的 DataContext (ViewModel),而另一个则没有。
【问题讨论】:
-
Alex Curtis 已经给出了正确的答案。解释一下:您只需在启动事件中创建另一个窗口,ApplicationStartupUri 只是告诉 wpf“请在完成加载后为我创建此窗口”。您还可以将 DataContext 赋值放在窗口本身的 Initialize Components 之后。