1
A
回答
0
不幸的是,如果您的控件是在XAML中定義的,那麼它們將會使用InitializeComponent調用進行初始化並完成加載過程。加載XAML窗口中的所有事件都會發生,無論您是否訂閱它們。
您可以將控件動態添加到代碼後面的表單中,但是如果您有單獨的線程完成工作,則需要使用Application Dispatcher CheckAccess和Invoke方法來確保控件加載到擁有該線程的線程上他們。
2
對於這個問題,我使用了Singleton模式。如果你熟悉PRISM和Bootstrapper,它有點類似。
這裏的主要想法是覆蓋App.xaml中的方法OnStartup
。默認行爲顯示在您的xaml StartupUri="MainWindow.xaml"
中,您必須刪除該屬性。
在OnStartup
覆蓋方法中,我使用一個類創建所有我的對象(Views,ViewModels,鏈接DataContexts ...)並在初始化完成時觸發一個事件。
此時我忽略閃屏並顯示一個滿載的應用程序(當您創建MainWindow
時調用InitializeComponent
,因此此時它已被調用)。
爲了更多的擴展使用,您可以在Windows和EventHandler
中的事件添加到您的引導程序類中。例如,當我想要完全刷新我的應用程序(重新啓動它)以及數據庫請求(在我的情況下,僅在應用程序啓動時才執行以加載參考)時,我會使用它。
希望能幫到:)
相關問題
- 1. 異步加載MVVM集合
- 2. WPF,MVVM和異步工作
- 3. 使用MongoDB的WPF C#異步MVVM
- 4. 在wpf中異步加載tableadapter
- 5. 從Mysql到WPF異步加載圖像
- 6. 在WPF MVVM中動態添加控件
- 7. WPF MVVM加載焦點域
- 8. WPF MVVM更改按鈕內容與加載用戶控件
- 9. 異步添加MVVM中的選項卡
- 10. 異步加載XML文件
- 11. ruby加載文件異步?
- 12. iphone異步文件加載?
- 13. WPF MVVM TreeView控件組
- 14. 與MVVM異步Task.Run
- 15. 異步更新wpf UI從另一個線程異步
- 16. MVVM UI控件依賴用戶使用WPF可見性
- 17. WPF MVVM - 更新UI線程
- 18. 異步加載TabItem
- 19. javascript異步加載
- 20. 異步加載XDocument
- 21. UITableViewDataSource異步加載
- 22. nhibernate,異步加載
- 23. MVVM異步等待模式
- 24. 如何在WPF中一個接一個地加載UI控件
- 25. MVVM c#如何將異步數據加載到屬性中?
- 26. 使用異步加載背景中的表單數據 - MVVM
- 27. 異步UI更新
- 28. 異步加載頁面中的用戶控件
- 29. 如何異步加載Web用戶控件
- 30. 異步加載JavaScript文件與回調