2012-05-23 8 views
6

En un enfoque MVVM simple, vinculo MainWindow a un modelo de vista anulando OnStartup en App.xaml.Anulación de resultados WPF OnStartUp en varias instancias de ventana

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(); 
    } 

    } 

Esto da como resultado dos instancias de MainWindow cuando ejecuto la aplicación WPF. ¿No debería solo resultar en uno ya que estoy anulando la puesta en marcha?

Una de las ventanas muestra el DataContext correcto (ViewModel), mientras que la otra no.

+1

Alex Curtis ya dio la respuesta correcta. Para explicarlo: usted acaba de crear otra ventana en su evento de inicio, ApplicationStartupUri simplemente le dice a wpf "Por favor, cree esta ventana para mí después de que termine de cargar". También puede colocar la asignación de DataContext en la ventana misma, después de los componentes de inicialización. – dowhilefor

Respuesta

10

En 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"> 

Retire la StartupUri. Eso detendrá la carga de la segunda ventana.

Cuestiones relacionadas