貝婁你可以看到我的引導程序。我想從引導程序注冊所有視圖。當我啟動應用程序時,會創建 WebView 和 EditView。GeneralView 是 EditView 的一部分,我必須先導航到 EditView 才能實例化它。啟動可執行文件時如何實例化所有視圖?class Bootstrapper : UnityBootstrapper{ protected override DependencyObject CreateShell() { // Register views IRegionManager regionManager = this.Container.Resolve<IRegionManager>(); regionManager.RegisterViewWithRegion("ContentRegion", typeof(WebView)); regionManager.RegisterViewWithRegion("ContentRegion", typeof(EditView)); // The following view is instantiated for the first time when I navigate to EditView regionManager.RegisterViewWithRegion("GeneralRegion", typeof(GeneralView)); return Container.Resolve<MainWindow>(); } protected override void InitializeShell() { Application.Current.MainWindow.Show(); } protected override void InitializeModules() { base.InitializeModules(); }}
1 回答

MM們
TA貢獻1886條經驗 獲得超2個贊
在實際顯示在屏幕上之前,不應實例化視圖。此外,視圖應該只定義用戶界面。
如果您在使用來自另一個視圖模型的事件聚合器發送事件時希望特定視圖模型處于活動狀態,那么您實際上是在這兩個視圖模型之間引入了間接耦合。這正是您首先要通過使用事件聚合器來避免的。
因此,如果您依賴所有正在處理的事件,您可能應該考慮使用在引導程序中作為單例實例化的共享服務。然后,您可以使用此共享服務注入您的視圖模型,并通過服務接口在它們之間進行通信。
- 1 回答
- 0 關注
- 210 瀏覽
添加回答
舉報
0/150
提交
取消