我們使用Castle Windsor和Prism 4(2010年2月)。我們使用Windsor引導程序,使Castle在CompositeWPFContrib包中發佈的Prism中發揮出色。棱鏡4 RegionManager在WPF中添加第二個區域時丟失第一個區域
我想在我的主殼牌的XAML上定義區域。如果我定義一個區域,像這樣:
<ContentControl prism:RegionManager.RegionName="{x:Static core:RegionNames.ToolBarRegion}"
DockPanel.Dock="Top"/>
,然後做在我的模塊之一以下初始化方法:
_regionManager.Regions[RegionNames.ToolBarRegion].Add(typeof(SomeView));
...生活是美好的。
但是,只要我在殼牌的XAML添加其他區域:
<ContentControl prism:RegionManager.RegionName="{x:Static core:RegionNames.WorkspaceRegion}"
DockPanel.Dock="Bottom"/>
然後執行:
_regionManager.Regions[RegionNames.WorkspaceRegion].Add(typeof(SomeOtherView));
...我得到的錯誤:「該地區管理者不知道包含ToolBarRegion區域。「
什麼給?只要我註釋掉第二個區域,就會找到第一個區域,當我將第二個區域添加回來時,就好像RegionManager拒絕持有區域集合一樣。應該說這是我第一次進軍溫莎城堡和棱鏡城,所以我不會錯過這裏可怕的東西。任何可以擺脫的光線都是最有幫助的。
有一個MainShellView,它是應用程序的Shell,MainShellView是一個MainSiteView,它是一個UserControl,它包含上面提到的DockPanel,它包含兩個ContentControl。如果在MainShellView中註冊它沒有找到任何區域,則在MainSiteView上註冊它會顯示所描述的行爲 – Scott 2011-05-16 21:55:16
您確定不要在MainSiteView上使用MainShellView嗎?不要嵌套你的地區?嘗試添加一個簡單的控制到DockPanel並查看它是否在添加區域後保持在那裏。也許當第二個區域被添加時,它會從DockPanel中刪除所有其他控件,就好像DockPanel是實際的區域一樣? – surfen 2011-05-16 22:46:01
這裏是heirarchy: 我們的MainWindow是一個Actipro RibbonWindow,我們在引導程序中手動創建。 MainWindow的內容設置爲MainShellView,它是一個UserControl,它具有兩個重疊的ContentControl,一個用於工作區,另一個用於對話框。 Workspace ContentControl在啓動時被設置爲MainSiteView。 MainSiteView有兩個ContentControls,一個是ToolBarRegion,另一個是WorkspaceRegion。我試着用MainWindow,MainShellView和MainSiteView註冊RM,並總是得到這個問題。一個地區有效,兩個地區失敗。 – Scott 2011-05-17 15:52:52