如何使XAML DataGridColumns填充整个DataGrid?

Pur*_*ish 111 c# wpf xaml datagrid wpf-controls

我在XAML(而不是Silverlight)中使用DataGrids和可调整大小的列,如果用户调整屏幕大小,DataGrid将展开.

目前,如果所有DataGrid列的宽度小于DataGrid的宽度,我会看到一个额外的"列",它不可点击并且没有用处.

有谁知道如何使一列始终调整大小以填充所有剩余空间?

Chr*_*isF 235

如果使用Width="*"该列将填充以扩展可用空间.

如果您希望所有列分割网格,则将其应用于所有列.如果您只想填充剩余空间,只需将其应用于该列,其余为"自动"或特定宽度.

Width="0.25*"如果希望列占可用宽度的1/4,也可以使用(例如).

  • @javapowered` <DataGrid AutoGenerateColumns ="True"ColumnWidth ="*"ItemsSource = {Binding} />` (13认同)
  • @MohamedSakherSawan它确实适用于datagrid._DataGrid_上的`C​​olumnWidth ="*"`和单个列上的`Width ="*"`都有所需的效果 (11认同)
  • 以及如果我使用`AutoGenerateColumns ="True"`如何做类似的事情? (2认同)
  • @javapowered - 我建议问你自己的问题,参考这个。 (2认同)

小智 16

确保您的DataGrid Width设置为类似{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}}.

像这样,你Width="*"DataGrid.Columns/DataGridXXXXColumn元素属性的设置应该有效.


小智 8

如上所述,ColumnWidth="*"XAML中的DataGrid运行良好.

我在这个上下文中使用它:

<DataGrid ColumnWidth="*" ItemsSource="{Binding AllFolders, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)


Muh*_*ziz 7

我的 2 美分 ->

聚会很晚

DataGrid -> Column -> Width="*" 仅当 DataGrid 父容器具有固定宽度时才有效。

示例:我将 DataGrid 放在 Grid -> Column 中,其 width="Auto" 然后 Width="*" 在 DataGrid 中不起作用,但如果您设置 Grid -> Column Width="450" 表示已修复,则它可以正常工作


dev*_*tal 6

将columns Width属性设置为比例宽度,例如*