2016-01-12 110 views
1

工作,我有三個區域:棱鏡6:RequestNavigate()只是一個區域

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

此代碼導航從TheWholeRegion正確TheBottomRegion區域:

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

但是,如果我嘗試加載兩個區域,然後我看到「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); 

我做錯了什麼?

+0

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中導航到相同的視圖,然後相同的視圖將在這兩個區域是恕我直言不可能的,嘗試與viewBottom中的另一個示例視圖 – Younes

回答

0

我需要的是我的Unity容器註冊System.Object和您的視圖類型之間的類型映射:如果你比輸入其他合約名稱

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