0

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

public ObservableCollection<X> MyCollection{ get; set; }

X 类包含 DataGrid 列的所有数据

例子:

private string name;

public string Name
{
    get { return name; }
    set
    {
        name= value;
        NotifyPropertyChanged("Name");
    }
}

等等

有什么我可以在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>
4

2 回答 2

5

你可以设置ColumnWidth="SizeToCells"这将工作。

<DataGrid x:Name="DG" ColumnWidth="SizeToCells"  ItemsSource="{Binding}" AutoGenerateColumns="False">

可用的尺寸模式ColumnWidth

  • Auto默认的自动调整大小模式会根据单元格和列标题的内容来调整 DataGrid 列的大小。
  • SizeToCells基于单元格的自动调整大小模式根据列中单元格的内容来调整 DataGrid 列的大小,不包括列标题。
  • SizeToHeader基于标题的自动调整大小模式仅根据列标题的内容来调整 DataGrid 列的大小。
  • Pixel基于像素的大小调整模式根据提供的数值调整 DataGrid 列的大小。
  • Star(*)星型大小模式用于按加权比例分配可用空间
于 2013-02-06T06:49:49.363 回答
1

如果您像您一样在 XAML 中显式定义列,只需将宽度设置为 Auto。不过,这应该是默认设置。

<DataGridTextColumn Width="Auto" Header="{x:Static p:Resources.Name}" Binding="{Binding Name}"></DataGridTextColumn>
于 2013-02-06T07:01:08.413 回答