當我的應用程序加載並讓他們將視圖放入Shell(主視圖)中的region(另請參閱this MSDN article)時,我想要加載模塊。我目前正在按需加載模塊,它工作得很好。 (I加載模塊與調用this.moduleManager.LoadModule("ModuleB");
其中moduleManager
被定義爲[Import(AllowRecomposition = false)] private IModuleManager moduleManager;
一個按鈕此所有來自ModularityWithMef.Desktop示例應用程序。)這裏的相關代碼:在棱鏡區域顯示模塊
模塊
[ModuleExport(typeof(ModuleB), InitializationMode = InitializationMode.OnDemand)]
public class ModuleB : IModule
{
[Import(AllowRecomposition = false)] private IRegionManager _regionManager;
/// <summary>
/// Initializes a new instance of the <see cref="ModuleB"/> class.
/// </summary>
public ModuleB()
{
}
/// <summary>
/// Notifies the module that it has be initialized.
/// </summary>
public void Initialize()
{
_regionManager.AddToRegion("ContentRegion", new ModuleBView());
}
}
XAML區域
<TabControl Regions:RegionManager.RegionName="ContentRegion" />
當我改變加載模塊時,可用( [ModuleExport(typeof(ModuleB), InitializationMode = InitializationMode.WhenAvailable)]
),當引導程序創建Shell時,我得到一個ModuleInitializeException:「這個RegionManager不包含名稱爲'ContentRegion'的區域。」這告訴我,在Shell中創建區域和模塊的初始化存在計時問題。
因此,這裏是我的問題:如何在發現時將Shell的區域註冊到模塊視圖,而無需使用OnDemand初始化並手動加載模塊?
感謝發佈。 :) – VipX1 2014-02-10 16:16:38