2009-07-29 62 views
0

林建築與複合應用程序塊(「棱鏡」)一個WPF應用程序具有一個問題,即,其由模塊噴射的用戶控制是在渲染非常緩慢V2,和Im。用戶控件包含一個包含大約2000行的數據網格,並且在控件呈現到屏幕時存在相當大的滯後。起初,我認爲緩慢是由於wpf工具包datagrid控制本身,但事實並非如此。當我將包含datagrid(TestControl)的控件從外部模塊移出並放入shell項目並直接從那裏加載時,控件立即呈現,沒有任何問題。使用複合應用程序塊的區域噴射慢

林在IModule的執行下面的代碼我的模塊中注入WPF用戶控件到外殼

this.regionManager.RegisterViewWithRegion("mainRegion", typeof(TestControl)); 

是否有性能問題在棱鏡應用加載其他模塊的控制什麼時候?什麼是加載它們的最佳方式?

感謝

回答

1

很可能這是生命週期事件的神器。在您的模塊開始加載並註冊之前,您的shell將會很好地顯示。如果你這樣做,它會「出現」花費更長時間,因爲你的用戶界面會出現一個巨大的漏洞,直到模塊初始化代碼觸發。

很多樣品你做一些像「Shell.Show();」在你的引導程序你CreateShell方法,但你可能會考慮移動到程序中引用你的引導程序類的私有成員,在它調用.Show(),像這樣:

public class Bootstrapper : UnityBootstrapper 
{ 
    Shell shell; 
    protected override DependencyObject CreateShell() 
    { 
     shell = Container.Resolve<Shell>(); 
     return shell; 
    } 

    protected override void InitializeModules() 
    { 
     base.InitializeModules(); 
     shell.Show(); 

    } 

我想這只是現在,它肯定覺得我的應用程序獲得了性能提升,所以我想我會自己做出這個改變。

如果你的模塊需要一個很長的時間來加載,你也可能想顯示CreateShell之間InitializeModules後啓動畫面。這裏