簡體   English   中英

導航到視圖但發生了具有給定名稱的異常區域,已經注冊

[英]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”,這是我在Navigation中使用的:

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

    }

現在,當我第一次單擊菜單項時,這是可以的,但是此后,如果發生單擊菜單項,則應用程序處於中斷模式:

我想這種例外情況會發生:

“具有給定名稱的區域已經注冊”

我在“ TitleModule”中注冊該區域:

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

我該如何解決這個問題?

我解決了我的問題。

例外情況是“已經注冊了具有給定名稱的區域”。

當我們導航到包含“ Region”的“ View”時,此區域將添加到“ NavigationService”中的“ RegionCollection”,如果多次將區域添加到RegionCollection,則會發生異常。

因此,我們應該:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM