2012-11-16 8 views
21

Po utworzeniu nowego projektu aplikacji WPF, automatycznie generowane są MainWindow.xaml, App.xaml i odpowiadający im kod za klasami. W App.xaml jest atrybut, który określa, które okno ma być prowadzony początkowo przez domyślnie jest to StartupUri="MainWindow.xaml"Jak dostosować uruchamianie aplikacji WPF?

Stworzyłem nową Dispatcher klasy w tym samym projekcie. Przy starcie chcę, aby wystąpiła instancja tej klasy Dispatcher, a następnie jedna z jego metod działania. Ta metoda faktycznie utworzy i wyświetli okno MainWindow. Więc jak mogę zmodyfikować App.xaml lub App.xaml.cs, aby to się stało? Lub, jeśli nie można tego zrobić przez App, w jaki sposób powinienem go wdrożyć? Dzięki.

Odpowiedz

38

Możesz usunąć atrybut StartupUri z pliku App.xaml.

Następnie, tworząc nadpisanie dla OnStartup() w pliku App.xaml.cs, można utworzyć nowe wystąpienie klasy Dispatcher.

Oto co moja realizacja szybkich app.xaml.cs wygląda następująco:

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 

     new MyClassIWantToInstantiate(); 
    } 
    } 
} 

Aktualizacji

Niedawno odkryto this workaround do błędu, jeśli użyć tej metody, aby dostosować uruchamiania aplikacji i nagle nic zasobów na poziomie aplikacji.

+0

Tak, dziękuję, to działa. – Boris

+0

Czy mógłbyś wyjaśnić, czym powinna być MyClassIWantToInstantiate()? Wypróbowałem MainWindow, który jest klasą okna głównego mojej aplikacji WPF i nic się nie dzieje po tym ... Kod zdarzenia Loaded nie jest wykonywany. –

+0

Klasa może naprawdę odpowiadać twoim potrzebom. Aby wyświetlić wdowę, musisz ją utworzyć, a następnie wywołać 'Show()', aby ją wyświetlić. –

2

Spróbuj użyć zdarzenia startowego (aplikacja klasy) - MSDN.

Możesz pokazać MainWindow w tej procedurze obsługi zdarzeń - po utworzeniu instancji Dispatchera.