Cr3*_*0rX 1 .net c# navigation prism
我有两个地区.导航区域和主要区域.
我的导航区域包含两个调用RequestNavigate方法的按钮.第一个按钮加载没有任何参数的视图
this.tRegionManager.RequestNavigate(RegionNames.MainRegion, ViewNames.VInfoMainViewUri);
Run Code Online (Sandbox Code Playgroud)
第二个按钮应该使用一些参数加载相同的视图
this.tRegionManager.RequestNavigate(RegionNames.MainRegion, new Uri(ViewNames.VInfoMainViewUri.OriginalString + "" + query.ToString(), UriKind.Relative));
Run Code Online (Sandbox Code Playgroud)
如果没有加载视图,这可以正常工作.如果加载了任何视图,则单击任何按钮都不会导致任何操作.
我试图从我的区域中删除每个活动视图,但这会导致错误
IViewsCollection col = tRegionManager.Regions[args.RegionName].Views;
foreach (var obj in col)
{
tRegionManager.Regions[args.RegionName].Remove(obj);
}
Run Code Online (Sandbox Code Playgroud)
该区域不包含指定的视图.参数名称:view
我该如何解决这个问题呢?
如果要创建新视图,即使区域中已存在相同类型的现有视图,也需要INavigationAware在View或ViewModel中实现该接口(Prism将首先检查视图,如果它没有'实现INavigationAware它还将检查ViewModel).
您特别感兴趣的是该IsNavigationTarget方法,该方法告诉Prism是否应重用View的当前实例,或者是否应创建另一个实例来满足导航请求.因此,要始终创建一个新视图,您将执行以下操作:
public class MyViewModel : INavigationAware {
bool INavigationAware.IsNavigationTarget(NavigationContext navigationContext)
{
return false;
}
void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext)
{
}
void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
{
}
}
Run Code Online (Sandbox Code Playgroud)
所有这些都在Prism 4文档的第8章中有更详细的解释; 他们还举例说明了它的工作原理.
| 归档时间: |
|
| 查看次数: |
4085 次 |
| 最近记录: |