导航到视图但已注册具有给定名称的异常区域
Navigation to a view but occurred Exception Region with the given name is already registered
我有一个使用 Prism 6 的 WPF 项目。
我有一个使用区域的视图 (TitleSearchView):
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
</Grid.RowDefinitions>
<ContentControl prism:RegionManager.RegionName="TitleTreeRegion"/>
<Button Content="View" Grid.Row="1" HorizontalAlignment="Center" Margin="5" MinWidth="80" Command="{Binding TitleViewCommand}"/>
</Grid>
我有一个要打开的菜单项 "TitleSearchView",我在导航中使用过:
var parameters = new NavigationParameters { { "viewMode", viewMode } };
_regionManager.RequestNavigate(RegionsName.ContentRegion, ViewsName.TitleSearchView, parameters);
和"TitleSearchViewModel"实施"INavigationAware":
public void OnNavigatedTo(NavigationContext navigationContext)
{
ViewMode = (ViewModeEnum)navigationContext.Parameters["viewMode"];
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return false;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
现在当我第一次点击菜单项时,这是可以的但是之后,如果点击菜单项发生应用程序处于中断模式:
我猜这是因为这个例外:
"Region with the given name is already registered"
我在"TitleModule"注册这个地区:
_regionManager.RegisterViewWithRegion(RegionNames.TitleTreeRegion, typeof(TitleTreeView));
我该如何解决这个问题?
我解决了我的问题。
有例外"Region with the given name is already registered"。
当我们导航到包含 "Region" 的 "View" 时,此区域添加到 "NavigationService" 中的 "RegionCollection",如果再添加一次该区域到 RegionCollection , 出现异常。
所以我们应该:
public void OnNavigatedFrom(NavigationContext navigationContext)
{
navigationContext.NavigationService.Region.RegionManager.Regions.Remove(RegionNames.TitleTreeRegion);
}
我有一个使用 Prism 6 的 WPF 项目。
我有一个使用区域的视图 (TitleSearchView):
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
</Grid.RowDefinitions>
<ContentControl prism:RegionManager.RegionName="TitleTreeRegion"/>
<Button Content="View" Grid.Row="1" HorizontalAlignment="Center" Margin="5" MinWidth="80" Command="{Binding TitleViewCommand}"/>
</Grid>
我有一个要打开的菜单项 "TitleSearchView",我在导航中使用过:
var parameters = new NavigationParameters { { "viewMode", viewMode } };
_regionManager.RequestNavigate(RegionsName.ContentRegion, ViewsName.TitleSearchView, parameters);
和"TitleSearchViewModel"实施"INavigationAware":
public void OnNavigatedTo(NavigationContext navigationContext)
{
ViewMode = (ViewModeEnum)navigationContext.Parameters["viewMode"];
}
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return false;
}
public void OnNavigatedFrom(NavigationContext navigationContext)
{
}
现在当我第一次点击菜单项时,这是可以的但是之后,如果点击菜单项发生应用程序处于中断模式:
我猜这是因为这个例外:
"Region with the given name is already registered"
我在"TitleModule"注册这个地区:
_regionManager.RegisterViewWithRegion(RegionNames.TitleTreeRegion, typeof(TitleTreeView));
我该如何解决这个问题?
我解决了我的问题。
有例外"Region with the given name is already registered"。
当我们导航到包含 "Region" 的 "View" 时,此区域添加到 "NavigationService" 中的 "RegionCollection",如果再添加一次该区域到 RegionCollection , 出现异常。
所以我们应该:
public void OnNavigatedFrom(NavigationContext navigationContext)
{
navigationContext.NavigationService.Region.RegionManager.Regions.Remove(RegionNames.TitleTreeRegion);
}