覆盖WPF OnStartUp会导致多个窗口实例

Kma*_*man 6 wpf mvvm

在一个简单的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();
    }

  }
Run Code Online (Sandbox Code Playgroud)

当我运行WPF应用程序时,这会导致MainWindow的两个实例.难道它不应该导致一个因为我压倒启动?

其中一个窗口显示正确的DataContext(ViewModel),而另一个则不显示.

Ale*_*tis 11

在App.xaml中:

<Application x:Class="WpfApplication1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
Run Code Online (Sandbox Code Playgroud)

删除StartupUri.这将阻止第二个窗口加载.