Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Prism 6:RequestNavigate()仅用于一个区域_C#_Wpf_Prism_Regions - Fatal编程技术网

C# Prism 6:RequestNavigate()仅用于一个区域

C# Prism 6:RequestNavigate()仅用于一个区域,c#,wpf,prism,regions,C#,Wpf,Prism,Regions,我有三个地区: <Grid> <DockPanel LastChildFill="True"> <ContentControl DockPanel.Dock="Top" prism:RegionManager.RegionName="{x:Static inf: RegionNames.TheUpperRegion}" Margin="5" /> <ContentControl prism:Re

我有三个地区:

<Grid>
    <DockPanel LastChildFill="True">
        <ContentControl  DockPanel.Dock="Top" prism:RegionManager.RegionName="{x:Static inf:
         RegionNames.TheUpperRegion}" Margin="5" />
        <ContentControl prism:RegionManager.RegionName="{x:Static inf:
         RegionNames.TheBottomRegion}" Margin="5"/>
    </DockPanel>

    <ContentControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.TheWholeRegion}"
     Margin="5"  />
</Grid> 
但是,如果尝试同时加载两个区域,则会看到“System.Object”而不是视图:

Uri viewUpper = new Uri("ModuleItems", UriKind.Relative);
Uri viewBottom = new Uri("ModuleItems", UriKind.Relative);
regionManager.RequestNavigate(RegionNames.TheUpperRegion, viewUpper);
regionManager.RequestNavigate(RegionNames.TheBottomRegion, viewBottom);
var loginView = regionManager.Regions[RegionNames.TheWholeRegion].Views.ElementAt(0);
regionManager.Regions[RegionNames.TheWholeRegion].Remove(loginView); 

我做错了什么?

我需要的是在我的
Unity
容器中注册
System.Object
和您的视图类型之间的类型映射:

protected override void RegisterTypes()
{            
   Container.RegisterType<object, TheBottomControl>("ModuleItemsBottom");
   Container.RegisterType<IBottomViewModel, TheBottomControlViewModel>();
   Container.RegisterTypeForNavigation<TheBottomControl>();

   Container.RegisterType<object, TheUpperControl>("ModuleItemsUpper");
   Container.RegisterType<IUpperViewModel, TheUpperControlViewModel>();            
   Container.RegisterTypeForNavigation<TheUpperControl>();          
}

我需要的是注册
System.Object
和我的
Unity
容器中的视图类型之间的类型映射:

protected override void RegisterTypes()
{            
   Container.RegisterType<object, TheBottomControl>("ModuleItemsBottom");
   Container.RegisterType<IBottomViewModel, TheBottomControlViewModel>();
   Container.RegisterTypeForNavigation<TheBottomControl>();

   Container.RegisterType<object, TheUpperControl>("ModuleItemsUpper");
   Container.RegisterType<IUpperViewModel, TheUpperControlViewModel>();            
   Container.RegisterTypeForNavigation<TheUpperControl>();          
}

如果您输入的合同名称不是ModuleItems?我认为您正在尝试导航到viewUpper和viewBotton中的同一视图,那么两个区域中都会有相同的视图,这是不可能的。如果您输入的合同名称不同于ModuleItems,请尝试ViewBottom中的另一个示例视图?我认为您正在尝试在viewUpper和viewBotton中导航到相同的视图,然后相同的视图将位于两个区域中,这是不可能的,请尝试在viewBotton中使用另一个示例视图
Uri viewUpper = new Uri("ModuleItemsUpper", UriKind.Relative);
Uri viewBottom = new Uri("ModuleItemsBottom", UriKind.Relative);
regionManager.RequestNavigate(RegionNames.TheUpperRegion, viewUpper);
regionManager.RequestNavigate(RegionNames.TheBottomRegion, viewBottom);
var loginView = regionManager.Regions[RegionNames.TheWholeRegion].Views.ElementAt(0);
regionManager.Regions[RegionNames.TheWholeRegion].Remove(loginView);