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

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