2010-12-20 70 views
2

在模塊初始化中,是否可以通過類型註冊一個區域來註冊視圖,而不會導致解析(實例化)視圖,直到請求激活視圖。WPF PRISM - 在不解析實例的情況下向區域註冊視圖

這種情況是當我們有依賴於和外部服務的視圖優先方法。我不希望服務在用戶真正需要該視圖前進行初始化,這有助於提高性能,因爲某些外部服務需要花費時間進行初始化。

注意:多個視圖註冊到相同的區域(例如菜單導航樣式場景)。

回答

4

有兩種方法可以解決這個問題。一個比另一個有更多的文檔。

  1. 使用View Injection自己接管實例化,而不是允許Region實例化您的視圖(稱爲View Discovery)。這很簡單,但如果不知道解決方案,就很難確切知道你在找什麼。

  2. 利用IActiveAware接口。在這種情況下,您實際上允許實例化視圖,但視圖會等待來自區域管理器的視圖處於活動狀態的通知。下面來看看在IActiveAware接口(這是相當不言自明):http://msdn.microsoft.com/en-us/library/microsoft.practices.prism.iactiveaware_members(v=pandp.38).aspx

和一個小codesample:

public class MyView : IActiveAware 
{ 
    private bool _isActive = false; 
    public bool IsActive 
    { 
      get { return _isActive; } 
      set 
      { 
       _isActive = value; 
       if(value) 
       { 
        //Good idea to thread this if you can 
        DoSomethingExpensive(); 
       } 
      } 

    } 

} 
相關問題