[英]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.