【发布时间】:2016-01-21 01:43:53
【问题描述】:
我想从 ModuleA 视图 导航到 ModuleB 视图。如何实现模块之间的导航?
在我使用 Prism 框架的应用程序中,我有两个模块
- 模块A
- 模块B
我在我的引导程序中配置两个模块,如下所示:
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
moduleCatalog.AddModule(typeof(ModuleA));
moduleCatalog.AddModule(typeof(ModuleB));
}
我在 ModuleA 和 ModuleB 中注册我的两个 Views,如下所示:
public class ModuleA : IModule
{
private readonly IRegionManager regionManager;
private readonly IUnityContainer container;
public StaffModule(IUnityContainer container, IRegionManager regionManager)
{
this.container = container;
this.regionManager = regionManager;
}
public void Initialize()
{
this.regionManager.RegisterViewWithRegion("MainRegion", () => this.container.Resolve<StaffView>());
}
}
public class AccountModule : IModule
{
private readonly IRegionManager regionManager;
private readonly IUnityContainer container;
public AccountModule(IUnityContainer container, IRegionManager regionManager)
{
this.container = container;
this.regionManager = regionManager;
}
public void Initialize()
{
container.RegisterType<object, AccountView>("AccountView");
////this.regionManager.RegisterViewWithRegion("MainRegion", () => this.container.Resolve<AccountView>());
}
}
当我在 ModuleA 中的 StaffView 中单击 Button 时,我想导航到 中的 AccountView模块 B。这是我的导航代码。
private void LodeViewfromModule()
{
IUnityContainer unityContainer = ServiceLocator.Current.GetInstance<IUnityContainer>();
var regionManager=unityContainer.Resolve<IRegionManager>();
var uri = new Uri("pack://application:,,,/PrismAuto.Account;component/AccountView.xaml", UriKind.RelativeOrAbsolute);
regionManager.RequestNavigate("MainRegion", uri);
}
但它显示:
System.Object 异常。
请任何人帮我解决这个问题。
【问题讨论】:
-
您是否尝试导航到
new Uri("AccountView", UriKind.Relative)?毕竟你已经用那个“名字”注册了它。
标签: c# wpf unity-container prism