C# 如何激活区域的下一个或最后一个视图?
在我的应用程序中,我使用的是Prism,它通过discovery(Unity)加载了三个模块 当模块加载时,它们在“TopLeftRegion”区域中注册每个视图 我正在尝试对模块视图执行导航。我的意思是,在C# 如何激活区域的下一个或最后一个视图?,c#,wpf,module,prism,region,C#,Wpf,Module,Prism,Region,在我的应用程序中,我使用的是Prism,它通过discovery(Unity)加载了三个模块 当模块加载时,它们在“TopLeftRegion”区域中注册每个视图 我正在尝试对模块视图执行导航。我的意思是,在之前和之后创建方法,在这些方法中可以激活(或[“TopLeftRegion”])。激活(…))该区域中的当前视图 例如,假设我有: |_ModuleA | |_ModuleB | |_ModuleC 如果我的当前视图是ModuleA,如果我按Next,则必须显示ModuleB,如果我按Be
之前和之后创建方法,在这些方法中可以激活(或[“TopLeftRegion”])。激活(…)
)该区域中的当前视图
例如,假设我有:
|_ModuleA
|
|_ModuleB
|
|_ModuleC
如果我的当前视图是ModuleA
,如果我按Next
,则必须显示ModuleB
,如果我按Before
则必须在该区域显示ModuleA
我当时在看房子:
regionManager.Regions["TopLeftRegion"].Views
但我不知道该怎么做。属性视图
不允许访问数据并移动到其中
这是一个简单的项目,我试图在ShellViewModel中创建该方法,但我不明白。如何导航每个模块
Prism不假设一个区域中只有一个活动视图,因此region类上没有任何属性使其超级简单。但这并不太棘手
RegionManager类跟踪ActiveViews属性中活动的视图。它不会跟踪哪个视图处于活动状态。在您的情况下,您的区域仅支持一个活动视图,因此您只能在该集合中找到第一个视图
另一个棘手的部分是在Region.Views集合中查找活动视图。下面我将Region.Views转换为一个列表,这样我就可以使用FindIndex来定位该活动视图的索引
private void Next(object commandArg)
{
IRegion myRegion = _regionManager.Regions["TopLeftRegion"];
object activeView = myRegion.ActiveViews.FirstOrDefault(); //Here we're trusting that nobody changed the region to support more than one active view
List<object> myList = myRegion.Views.ToList<object>(); //Cast the list of views into a List<object> so we can access views by index
int currentIndex = myList.FindIndex(theView => theView == activeView);
int nextIndex = (currentIndex + 1) % (myList.Count); //Wrap back to the first view if we're at the last view
object nextView = myList[nextIndex];
myRegion.Activate(nextView);
}
private void Next(对象命令arg)
{
IRegion myRegion=_regionManager.Regions[“TopLeftRegion”];
object activeView=myRegion.activeView.FirstOrDefault();//这里我们相信没有人更改区域以支持多个活动视图
List myList=myRegion.Views.ToList();//将视图列表强制转换为一个列表,以便我们可以按索引访问视图
int currentIndex=myList.FindIndex(theView=>theView==activeView);
int nextIndex=(currentIndex+1)%(myList.Count);//如果我们在最后一个视图,则返回到第一个视图
对象nextView=myList[nextIndex];
myRegion.Activate(nextView);
}
导航到上一个视图基本相同,只是从索引中减去一个,而不是添加一个 你试过了吗?