2012-11-29 152 views
11

我有一個DataGrid有很多列。WPF DataGrid列寬自動和滾動條

我想Width="Auto"與滾動條顯示一切,如果窗口比所有列窄。如果窗口更寬,我希望列能夠跨越空白空間,所以沒有死區。

基本上我想列最小寬度完全適合內容或標題。如果窗口更寬,則擴大到更大。

+0

你可以發佈什麼XAML你有這麼遠嗎? –

+0

如果寬度設置爲自動,滾動條從不出現。 –

+0

@EduardoBrites修改問題添加更多說明 – Brent

回答

8

在XAML中設置的DataGrid ColumnWidth="Auto"

在用戶控件構造函數到

dataGrid.Loaded += (s, e) => { // Column widths 
    dataGrid.Columns.AsParallel().ForEach(column => { 
     column.MinWidth = column.ActualWidth; 
     column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); 
    }); 
}; 

使用自定義DataGrid中使用這種偉大工程。

+0

您也可以查看TextRenderer.MeasureText屬性並將最小寬度設置爲等於它。 –

+0

-1不會使用標準的WPF和.NET 4.5進行編譯;沒有太多用處說它適用於**自定義** ** Datagrid **如果代碼不提供 – MickyD

+2

-1也**當處理GUI元素時,AsParallel()**通常是一個很大的不行號 – MickyD

22

爲了在WPF DataGrid「補」的所有水平空間爲你指定的,請確保您有這些屬性在XAML設置:

<DataGrid 
    HorizontalAlignment="Stretch" 
    HorizontalContentAlignment="Stretch" 
    ColumnWidth="*" /> 
+2

ColumnWidth =「*」效果極佳:) –

+2

此解決方案可防止網格在寬度不足以容納所有列的內容時獲取水平滾動條。 – dlf