根据内容更改列宽

Hod*_*lom 0 wpf xaml datagrid

我有一个 DataGrid,他的 ItemSource 绑定到以下对象:

public ObservableCollection<X> MyCollection{ get; set; }
Run Code Online (Sandbox Code Playgroud)

X 类包含 DataGrid 列的所有数据

例子:

private string name;

public string Name
{
    get { return name; }
    set
    {
        name= value;
        NotifyPropertyChanged("Name");
    }
}
Run Code Online (Sandbox Code Playgroud)

ETC。

有什么我可以在xaml中设置为基于内容的列宽度(当内容更改时宽度也会相应更改)?

我见过很多在 C# 代码中执行此操作的示例,我希望在 XAML 中执行此操作,这可能吗?

编辑:

数据网格:

<DataGrid x:Name="DG" ItemsSource="{Binding}" AutoGenerateColumns="False">
  <DataGrid.Columns>
     <DataGridTextColumn Header="{x:Static p:Resources.Name}" Binding="{Binding Name}"></DataGridTextColumn>
     <DataGridTextColumn Header="{x:Static p:Resources.x}" Binding="{Binding X}"></DataGridTextColumn>
     <DataGridTextColumn Header="{x:Static p:Resources.y}" Binding="{Binding Y}"></DataGridTextColumn>
  </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

sa_*_*213 5

你可以这样设置,ColumnWidth="SizeToCells"这样就可以工作了。

<DataGrid x:Name="DG" ColumnWidth="SizeToCells"  ItemsSource="{Binding}" AutoGenerateColumns="False">
Run Code Online (Sandbox Code Playgroud)

可用尺寸模式ColumnWidth

  • 自动默认的自动调整大小模式根据单元格和列标题的内容调整 DataGrid 列的大小。
  • SizeToCells基于单元格的自动调整大小模式根据列中单元格的内容(不包括列标题)调整 DataGrid 列的大小。
  • SizeToHeader基于标题的自动调整大小模式仅根据列标题的内容调整 DataGrid 列的大小。
  • 像素基于像素的大小调整模式根据提供的数值调整 DataGrid 列的大小。
  • Star(*)星形大小调整模式用于按加权比例分配可用空间