我有以下電網爲LayoutRoot控制在我的Silverlight頁:Silverlight的明星級網格行(MIS)的行爲就像自動調整大小排
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="*" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
第二行的全部內容是一個DataGrid填充通過數據綁定,網格的總高度很大,可能是3000像素。我的理解是,通過這種方式進行行定義,第一行和第三行應該具有相同的高度並始終保持可見(如頁眉和頁腳行),而第二行的大小應爲總高度減去60行。但實際發生的情況是,第二行佔用了全部3000像素,並未顯示垂直滾動條,並且將頁腳行拖過控件的底部。這是什麼高度=「自動」應該做的,我認爲,不是什麼高度=「*」應該做的。
我在這裏錯過了什麼?謝謝!
更新:原來,這個問題是我的網格是在其中嵌入在主頁的導航頁面,因爲我接受了默認的Silverlight項目模板。通過將所有內容放在StackPanel中,這個主頁的佈局可以擴展到內容。看起來您並不需要將Horiontal和Vertical alignment屬性設置爲Stretch。當我用網格替換StackPanel並將內部網格行高設置爲*時,它按預期工作。
這似乎並不奏效。我在根對象(LayoutRoot網格,我也試着把它們放在頁面上)上設置了兩個對齊屬性,我得到了相同的結果。我在那裏放置了一個調試MessageBox來報告控件的ActualHeight,並且它報告1746,換句話說,數據網格的大小取決於內容,而不是可用空間。該死,這很令人沮喪。 – 2010-09-21 16:28:02
@Joshua Frank:這類事情通常很容易解決,但需要完整的XAML,因爲許多事情與上面的代碼段有很多不同之處。如果您的代碼/ Xaml是保密的,您可以通過我的網站與我聯繫。乾杯 – 2010-09-21 18:31:38
感謝您的提議。我正在仔細研究整棵樹以消除變量,如果我無法解決問題,我會聯繫您。接受答案,因爲它讓我走上正軌,因爲我可能會要求更多的幫助! – 2010-09-22 00:10:44