2013-02-18 163 views
6

一個帶有3行和3列的WPF網格控件。相關行的高度設置爲自動。在前兩個單元中,我有兩個具有動態高度的控件。在第三個單元格中,我想要自動設置另一個控件以在網格單元格內拉伸。我嘗試過VerticalAlignment="Stretch",但是它只是簡單地將網格行高設置爲等於控件的高度。我在這裏有什麼選擇?WPF:設置控件高度以填充網格行高

回答

7

不知道您在Cell 3中使用的是什麼樣的控件,但大多數WPF控件會自動拉伸以適應Grid單元格內部。網格的行高將由單元格1和2中控件的高度設置。

如果您正在使用某種自定義控件,其中高度的默認行爲不同,則可以設置Height="Auto"

如果這也不行,你可以做一個數據綁定來獲得在任一單元1或2的控制設置你的控制Height物業小區3到的實際高度如下:

Height="{Binding ActualHeight, ElementName=MyControlNameFromCell1, Mode=OneWay}" 

編輯

另一種方式,可能是更強大的是做一個數據行的高度結合。因此,不要使用"Auto"作爲行的高度,請使用上面顯示的數據綁定。

+0

謝謝。單元格3中的控件是TabControl,而單元格1和單元格2中包含網格。問題是TabControl的內容(以及TableControl本身)比兩個Grid都大,所以整行佔用了TabControl的高度。我想要的是爲TabControl獲取網格的高度(其中較大的一個),並在其內部引入滾動條以顯示其所有內容。我已經在TabControl中添加了一個ScrollViewer,但是由於TabControl變得足夠大以顯示其所有內容,ScrollViewer仍然無用。 – dotNET 2013-02-18 17:00:17

+0

綁定也似乎不起作用。 – dotNET 2013-02-18 17:02:28

+0

更新。綁定實際上工作。問題是我在TabControl的屬性中有Margin =「3」,這在某種程度上導致它變得和它的內容一樣大。刪除邊距並添加上面提到的高度綁定似乎可以做到。 – dotNET 2013-02-18 17:40:44