используйте это для любого столбца, который вы хотите вписать в его содержимое: Width = "SizeToCells"

я есть WPFDataGrid который содержит некоторые данные. Я хотел бы установить ширину столбцов таким образом, чтобы содержимое помещалось и никогда не обрезалось (вместо этого должна появиться горизонтальная полоса прокрутки). Кроме того, я хочуDataGrid заполнить все доступное место (я работаю сDockPanel). Я использую следующий код (упрощенно):

<DataGrid ItemsSource="{Binding Table}">
    <DataGrid.Columns>
        <DataGridTextColumn MinWidth="100" Width="Auto" Header="Column 1" Binding="{Binding Property1}" />
        <DataGridTextColumn MinWidth="200" Width="Auto" Header="Column 2" Binding="{Binding Property2}" />
    </DataGrid.Columns>
</DataGrid>

Это, видимо, не работает из коробки сWidth="Auto"&nbsp;как это всегда выглядит примерно так:

Это явно выглядит некрасиво. Я хотел бы выбрать целую строку или, что было бы гораздо лучше, столбцы, чтобы заполнить всю ширину, но, как видно, это не работает.

Если я используюWidth="*"&nbsp;вместо этого содержимое столбцов обрезается, что для меня еще хуже.

Я нашелподобный вопрос здесьи обходной путь был размещен там. Это может работать, но я работаю с шаблоном MVVM, поэтомуItemsSource обновляется в ViewModel&nbsp;и я не могу думать о способе сделать это оттуда, потому что я не могу получить доступ кActualWidth&nbsp;собственностьDataGridColumn, Кроме того, я хотел бы сделать это только в XAML, если это возможно.

Буду признателен за любую помощь. Спасибо!

Изменить: Поскольку я до сих пор не знаю, что с этим делать, я начинаю маленькую награду. Я был бы очень рад предложению, что можно сделать с моей проблемой. Еще раз спасибо!

Редактировать 2: После ответа Сауса я снова подумал о вариантах. Проблема в том, что мне нужно обновитьWidth&nbsp;иMinWidth&nbsp;Свойства также во время работы приложения, поэтому не только после загрузки окна. Я уже пытался сделать что-то вроде

column.Width = new DataGridLength(1, DataGridLengthUnitType.Auto);
column.MinWidth = column.ActualWidth;
column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);

в каком-то случае, который запускается, когда основнойItemsSource&nbsp;изDataGrid&nbsp;обновляется. Однако это не работает, так какActualWidth&nbsp;свойство не меняется после установкиWidth&nbsp;наAuto, Есть ли возможность как-то «перекрасить» его, чтобы получитьActualWidth&nbsp;свойство обновлено? Спасибо!