2012-05-18 60 views
4

我有一個應用程序可以在用戶控件之間切換很多,我希望它們可以伸展到窗口的最大尺寸,但有些東西阻止它們這樣做,而是佔用最少的空間量。如何讓WPF組件佔用所有可用空間?

我注意到我的組件內的usercontrols調整大小,因爲它們應該(即按鈕鎖定到控件的底部保持原位,控件只是沒有達到窗口的底部,其中按鈕應該最終結束)我沒有設置任何與尺寸有關的屬性(我嘗試了幾個,但沒有產生預期效果)。所以我假設問題在於顯示控件的主要組件。這就是建立這樣的:

<Window.Resources> 
    <DataTemplate DataType="{x:Type vm:MessageViewModel}"> 
     <vw:MessageView/> 
    </DataTemplate> 
    <DataTemplate DataType="{x:Type vm:ConnectionsViewModel}"> 
     <vw:ConnectionView/> 
    </DataTemplate> 
    ... 
</Window.Resources> 
<Grid> 
    <ItemsControl ItemsSource="{Binding ViewModels}" Margin="0,20,0,0"/> 
    ... 
</Grid> 

的解決方案,我用感謝艾爾諾:

變化

<ItemsControl ItemsSource="{Binding ViewModels}" Margin="0,20,0,0"/> 

<ItemsControl ItemsSource="{Binding ViewModels}" Margin="0,20,0,0"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <Grid/> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
    </ItemsControl> 
+0

在這段代碼片段中沒有很多信息,你試過水平/垂直對齊=拉伸? –

+0

我做過了,但似乎沒有效果。它默認水平伸展,但不垂直 – Valyrion

+0

你能發佈更多的代碼嗎? –

回答

7

一個ItemsControl放入一個ItemTemplate的項目,把這些放在ItemsPanel中。

可以通過設置ItemsPanelTemplate來調整ItemsPanel。

默認情況下,ItemsPanel是一個StackPanel(垂直)和StackPanels不分配行/垂直拉伸項目。

所以你可以做的是在ItemsPanelTemplate中放置一個不同的控件,它可以隨意伸展和對齊項目。

+0

謝謝,我有一種感覺,它可能與ItemsControl中使用的模板有關,但我不知道需要更改什麼。我用我的解決方案編輯了我的問題。 – Valyrion

+0

不客氣。 –

相關問題