2009-12-02 62 views
2

有人可以幫助我理解WPF拉伸對齊。我經常碰到一些問題,我想要一個控件來填充一個區域,但我從不明白我應該把VerticalAlignment =「Stretch」放在哪個級別上。特別是在涉及UserControl時。WPF對齊拉伸

我總是通過嘗試不同的東西來解決問題,或者在各個層面上進行拉伸,但我想了解如何正確地做到這一點。

讓我們我現在得到了例如:

  • 我有一個固定大小的小區(其可以與一個GridSplitter調整大小)
  • 在該小區中的網格我有包含與一個StackPanel一個用戶控件一個TabControl
  • 在TabControl的我有一個包含用戶控件的另一個與一個ListView

或者在某種僞XAML

的TabItems
<ns:MyUserControl1 Grid.Row="0" Grid.Column="0"> 
    <!-- this is in MyUserControl1 --> 
    <StackPanel> 
     <TabControl> 
      <TabItem> 
       <ns:MyUserControl2> 
        <!-- This is in MyUserControl2 --> 
        <ListView/> 
       </ns:MyUserControl2> 
      </TabItem> 
     </TabControl> 
    </StackPanel> 
</ns:MyUserControl> 

現在我想讓ListView填充整個網格單元格(當然不包括TabControl和邊距)。

回答

3

您的ListView將會填充您的MyUserControl2 - 如果您希望這適合整個Tab,您需要確保您刪除UserControl的xaml文件中的高度和寬度約束(默認值爲300)

編輯:道歉 - 我跳過了你的xaml的重要部分... MyUserControl1容器是一個StackPanel ...這將堆疊子控件和調整大小,以適應他們;如果你用一個DockPanel(或一個網格)替換它,子控件將填充可用空間並給你後面的結果...

看看this msdn文章...希望這有助於: )

+0

你說得對。閱讀文章後,我明白我的問題通常與StackPanel有關。現在我明白什麼時候使用DockPanel。 – adrianm 2009-12-02 10:19:41