web-dev-qa-db-ja.com

WPF DataGrid列幅自動およびスクロールバー

多くの列を持つDataGridがあります。

が欲しいです Width="Auto"ウィンドウがすべての列よりも狭い場合、スクロールバーにすべてが表示されます。ウィンドウが広い場合は、列を空のスペースに広げて、デッドスペースがないようにします。

基本的に、列の最小幅をコンテンツまたはヘッダーに完全に合わせる必要があります。そして、ウィンドウが広い場合は大きく拡大します。

15
Brent

XAMLでDataGrid ColumnWidth="Auto"を設定します

UserControlコンストラクターに追加

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

これをカスタムDataGridで使用すると、うまく機能します。

9
Brent

指定したとおりにWPF DataGridのすべての水平スペースを「埋める」には、これらのプロパティが[〜#〜] xaml [〜#〜]に設定されていることを確認します。

<DataGrid 
   HorizontalAlignment="Stretch" 
   HorizontalContentAlignment="Stretch" 
   ColumnWidth="*" />
26
Alexander Bell