导航到视图,但已注册具有给定名称的异常区域



我有一个使用 Prism 6 的 WPF 项目。

我有一个使用区域的视图(标题搜索视图(:

<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>

我有一个菜单项,我想打开"标题搜索视图",我从导航中使用:

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)
{
}

现在,当我第一次单击菜单项时,这没关系 但是在那之后,如果单击菜单项发生 应用程序处于中断模式:

我想这种情况发生在这个异常中:

"已注册具有给定名称的区域">

我在"标题模块"中注册了这个区域:

_regionManager.RegisterViewWithRegion(RegionNames.TitleTreeRegion, typeof(TitleTreeView));

如何解决此问题?

我解决了我的问题。

有例外"具有给定名称的区域已注册"。

当我们导航到包含"区域"的"视图"时,该区域将添加到"导航服务"中的"区域集合"中,如果多次将该区域添加到区域集合,则会发生异常。

所以我们应该:

public void OnNavigatedFrom(NavigationContext navigationContext)
{
navigationContext.NavigationService.Region.RegionManager.Regions.Remove(RegionNames.TitleTreeRegion);
}

最新更新