Kabuk penceremde bir sekmeler kümesi ve bir ana bölge, bir içerik denetleyicisi. Belli bir sekme seçildiğinde isteğe bağlı olarak yüklemek istediğim dört modül var. Bu yüzden tab1 seçildiğinde, module2'yi yüklemek istiyorum, tab2 seçildiğinde ModuleB'yi yüklemek istiyorum, vs. Uygulama başladığında ilk modül yüklenir. Sorun şu ki, sekmeyi değiştirdiğimde hiçbir şey olmuyor. Zor olmayan hatalar var.PRISM ve WPF isteğe bağlı bir modül nasıl eklenir
Kabuk:
public partial class Shell : RibbonWindow, IShellView
{
private readonly IRegionManager regionManager;
private readonly IModuleManager moduleManager;
public Shell(IModuleManager moduleManager)
{
this.moduleManager = moduleManager;
InitializeComponent();
}
public void ShowView()
{
this.Show();
}
private void onTabSelection(object sender, RoutedEventArgs e)
{
this.moduleManager.LoadModule("ModuleB");
}
}
Bootstrapper:
public partial class MyBootstrapper : UnityBootstrapper
{
protected override IModuleCatalog GetModuleCatalog()
{
var catalog = new ModuleCatalog();
catalog.AddModule(typeof(ModuleA)).AddModule(typeof(ModuleB));
return catalog;
}
protected override void ConfigureContainer()
{
Container.RegisterType<IShellView, Shell>();
base.ConfigureContainer();
}
protected override DependencyObject CreateShell()
{
ShellPresenter presenter = Container.Resolve<ShellPresenter>();
IShellView view = presenter.View;
view.ShowView();
return view as DependencyObject;
}
}
Ben bu yaklaşımı denedik Ekim 2009.
- WPF ve Silverlight için prizma Kompozit Uygulama Rehberlik bu sürümünü kullanıyorum Ve talep üzerine yükleyebilmek istediğim modülB (bu yorumlu satırı kullandım, bu yüzden onu burada bıraktım):
[Module(ModuleName = "ModuleB", OnDemand = true)]
public class ModuleB : IModule
{
private readonly IUnityContainer _container;
private readonly IRegionManager _regionManager;
public ModuleB(IUnityContainer container, IRegionManager regionManager)
{
_container = container;
_regionManager = regionManager;
}
public void Initialize() {
_regionManager.Regions["MainRegion"].Add(new ModuleBView());
this.RegisterViewsAndServices();
// this._regionManager.RegisterViewWithRegion(RegionNames.MainRegion,() => _container.Resolve<MissionProfileView>());
}
protected void RegisterViewsAndServices()
{
_container.RegisterType<Modules.ModuleBView>();
}
}
yanlış burada ne yapıyorum? Nasıl ilerlemeliyim?
yardımcı olur ben hemen hemen aynı senaryo var se. Benden soru için +1 – autonomatt