在模塊初始化中,是否可以通過類型註冊一個區域來註冊視圖,而不會導致解析(實例化)視圖,直到請求激活視圖。WPF PRISM - 在不解析實例的情況下向區域註冊視圖
這種情況是當我們有依賴於和外部服務的視圖優先方法。我不希望服務在用戶真正需要該視圖前進行初始化,這有助於提高性能,因爲某些外部服務需要花費時間進行初始化。
注意:多個視圖註冊到相同的區域(例如菜單導航樣式場景)。
在模塊初始化中,是否可以通過類型註冊一個區域來註冊視圖,而不會導致解析(實例化)視圖,直到請求激活視圖。WPF PRISM - 在不解析實例的情況下向區域註冊視圖
這種情況是當我們有依賴於和外部服務的視圖優先方法。我不希望服務在用戶真正需要該視圖前進行初始化,這有助於提高性能,因爲某些外部服務需要花費時間進行初始化。
注意:多個視圖註冊到相同的區域(例如菜單導航樣式場景)。
有兩種方法可以解決這個問題。一個比另一個有更多的文檔。
使用View Injection自己接管實例化,而不是允許Region實例化您的視圖(稱爲View Discovery)。這很簡單,但如果不知道解決方案,就很難確切知道你在找什麼。
利用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();
}
}
}
}