2015-04-21 72 views
1

我刪除了我之前的問題以適當地進行修改,因爲我以前的帖子既沒有幫助也沒有完整,imo。WPF UserControl Not Displaying

爲了清楚起見:我使用Prism框架並遵守嚴格的MVVM模式。

問題:當我加載UserControl,在一些模塊,ModuleA定義,它不會在Shell視圖中顯示。但是,如果我在ItemsControl中加載我的UserControl,則我已定義的元素出現,但它們全部「一起擠壓」。

在ModuleA,我有以下的用戶控件:現在

<UserControl ... 
      ...> 

... 

<Grid> 
    ... My Content Here ... 
</Grid> 
</UserControl> 

,在我的項目,我已經定義了Shell正是如此:

<Window ... 
     ...> 

... 

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="10"/> 
     <RowDefinition Height="10"/> 
     <RowDefinition Height="10"/> 
    </Grid.RowDefinitions> 

    <Border Grid.Row="0" .../> 

    <UserControl Grid.Row="1" prism:RegionManager.RegionName="ModuleARegion"/> 

    <Border Grid.Row="2" .../> 

</Grid> 
</Window> 

現在,在這種情況下,一切負荷, ModuleA被識別,但屏幕上沒有顯示。

但是,如果我改變<UserControl Grid.Row="0" prism:RegionManger .../><ItemsControl Grid.Row="0" prism:RegionManager .../>,我可以看到內容我已經在我的ModuleAUserControl擺出來,但內容全部「壓扁在一起」。

有沒有人有任何想法,爲什麼這可能會發生?

+1

你確定'RowHeight'只有10個像素嗎?也許你應該嘗試其他的東西或'自動'或'*'代替 – bit

+0

我正在談論RowDefinition * – bit

+0

@bit是的,我只是用這個例子10。它可以是任何你想要的。更重要的是,第一行(0索引)中沒有顯示任何內容。 – Bryant

回答

2

Prism中的默認區域適配器不支持UserControl。您需要使用ContentControl,ItemsControl或基於選擇器的控件(如ComboBox)來獲得開箱即用支持或編寫自己的區域適配器。

注意:當您與區域進行交互時,區域適配器用於添加和刪除特定類型控件區域的控件。