我正在Wpf开始一个新项目,现在正在考虑使用Prism。现在我只是尝试使用Prism设置应用程序的导航。不幸的是,我缺乏框架经验使得开始有点困难..
为了更准确地说明我的第一个挑战,我有一个带有“导航/菜单”区域和“主要”区域的应用程序。导航区域对于所有不同的主要区域视图都是相同的,因此我在shell.xaml中定义了菜单。单击任何菜单项时,我想使用Prism向该区域添加视图。第一;这是人们通常会使用棱镜吗?如果是这样;什么是典型的方法?我的意思是更具结构性......
我的印象是,Prism最终会使我的应用程序更具可伸缩性,我发现我从中获得了一些其他优势 - 比如IoC容器。所以我想用它 - 如果我只能完成第一步......
答案 0 :(得分:4)
我有一个示例,它对使用菜单的模块以及如何向区域添加视图使用了更多的CAG感觉。它应该让事情变得更加清晰。
http://dl.getdropbox.com/u/376992/CAGMenus.zip
希望这有帮助, 安德森
答案 1 :(得分:3)
Bumbuska,
Prism将是您实现此功能的绝佳方式,一旦您了解了这些主要内容,就很容易做到。
我将这样做的方法是在主区域的启动事件中添加事件侦听器。当您在菜单中选择项目时,您将触发该事件。当发生这种情况时,您的主区域将处理该事件,并从主区域清除当前视图。然后创建要使用的新视图并添加它。
您的主要区域应如下所示:
public void Initialize()
{
Events.PageEvents.ClickedEvent1 ce1 = this.eventAggregator.GetEvent<Events.PageEvents.ClickedEvent1>();
ce1.Subscribe(LoadView, ThreadOption.UIThread, true);
}
private void LoadView(Events.HomePageEvents.Clicked clicked1)
{
IRegion mainRegion = RegionManager.Regions["MainRegion"];
foreach (object view in new List<object>mainRegion.Views))
{
RegionManager.Regions["MainRegion"].Remove(view);
}
IModule firstModule = Container.Resolve<Modules.FirstModule>();
firstModuleModules.Initialize();
}
我希望指出你正确的方向。如果您需要更多信息,请与我们联系。