【发布时间】:2016-02-03 13:53:38
【问题描述】:
Prism 应用程序中只有一个模块。让这个模块名称为ModuleA,应用程序名称为"CoolAppl"。这个应用程序很酷,它在生产中运行得非常好。一旦有人想向这个应用程序"CoolAppl"添加新按钮,例如"Delete Person"。
我的问题是我或另一个城市的其他人是否可以通过添加带有必要按钮 Delete Person 的 dll 来将新按钮 "Delete Person" 添加到应用程序 "CoolAppl" 的 ModuleA 而无需重新编译任何模块?
如果可能的话,请提供我应该挖掘/搜索的方向:)。
我正在使用这样的导航机制:
Uri wholeView = new Uri("ModuleA", UriKind.Relative);
regionManager.RequestNavigate(RegionNames.TheBottomRegion, wholeView);
var currentView = regionManager.Regions[RegionNames.TheWholeRegion].Views.ElementAt(0);
regionManager.Regions[RegionNames.TheWholeRegion].Remove(currentView);
识别模块的类如下所示:
public class ModuleAModule : ModuleBase, IModule
{
private readonly IRegionManager _regionManager;
private readonly IUnityContainer _container;
public ModuleAModule(IUnityContainer container, IRegionManager regionManager)
: base(container, regionManager)
{
_regionManager = regionManager;
_container = container;
}
protected override void InitializeModule()
{
RegionManager.RegisterViewWithRegion(RegionNames.TheWholeRegion, typeof(LoginControl));
}
protected override void RegisterTypes()
{
Container.RegisterType<IViewModel, MyViewModel>();
Container.RegisterTypeForNavigation<MySuperControl>();
}
}
【问题讨论】:
-
您的问题没有一般性的答案。我们甚至不知道您如何实现导航、视图发现等。更具体,描述您的应用,提供相关代码。
-
@dymanoid 我添加了新代码。感谢您的建议