我有一個WPF DataGrid(來自WPFToolkit包)像我的應用程序中的以下內容。WPF DataGrid窗口調整大小不會調整大小DataGridColumns
<Controls:DataGrid>
<Controls:DataGrid.Columns>
<Controls:DataGridTextColumn Width="1*" Binding="{Binding Path=Column1}" Header="Column 1" />
<Controls:DataGridTextColumn Width="1*" Binding="{Binding Path=Column2}" Header="Column 2" />
<Controls:DataGridTextColumn Width="1*" Binding="{Binding Path=Column3}" Header="Column 3" />
</Controls:DataGrid.Columns>
</Controls:DataGrid>
列的寬度應該被自動地調整,使得所有三列填充網格的寬度,所以在每列設置Width="1*"
。我用這種方法遇到了兩個問題。
- 當數據網格的
ItemsSource
是null
或空列表,列不會大小以適合格柵的寬度,但具有大約20像素的一個固定的寬度。請看下面的圖片:http://img169.imageshack.us/img169/3139/initialcolumnwidth.png
- 當我最大化應用程序窗口時,列不會調整它們的大小,但保持它們的初始大小。見下圖:
http://img88.imageshack.us/img88/9362/columnwidthaftermaximiz.png
- 當我用鼠標調整應用程序窗口的大小時,列不會調整大小。
我能通過從DataGrid派生一個子類並覆蓋DataGrid的OnRenderSizeChanged
方法來解決問題#3,如下所示。
protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
{
base.OnRenderSizeChanged(sizeInfo);
foreach (var column in Columns)
{
var tmp = column.GetValue(DataGridColumn.WidthProperty);
column.ClearValue(DataGridColumn.WidthProperty);
column.SetValue(DataGridColumn.WidthProperty, tmp);
}
}
不幸的是,這並沒有解決問題#1和#2。我怎樣才能擺脫它們?