Как настроить автоматическую подгонку ширины сетки данных к ширине родительского элемента управления

#wpf #xaml #wpfdatagrid

#wpf #xaml #wpfdatagrid

Вопрос:

Имея сетку данных внутри сетки, я хотел бы, чтобы столбцы ширины сетки данных и сетки данных автоматически помещались внутри родительского элемента управления.

Так что, если пользователь решит увеличить ширину окна, как мне увеличить ширину сетки и ее столбцов?

 <Window x:Class="AME.WpfBidouille.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid>           
            <DataGrid.Columns>
                <DataGridTextColumn Header="Publication date"/>
                <DataGridTextColumn Header="A very large field to be displayed"/>
                <DataGridTextColumn Header="N° Omega" />
                <DataGridTextColumn Header="Crée le" />
                <DataGridTextColumn Header="Login" />
                <DataGridTextColumn Header="Demandeur" />
                <DataGridTextColumn Header="Type" />
                <DataGridTextColumn Header="Status" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>
  

Комментарии:

1. вы можете попробовать добавить ColumnWidth="*" в сетку данных

2. Удалите свой hardset Width="525"

3. @Chris amp; @ Darius : не помогает. ширина столбцов остается прежнего размера.

4. попробуйте установить Width="*" для всех столбцов

5. @nit: кажется, работает нормально! Спасибо.

Ответ №1:

Установите Width для каждого из ваших столбцов значение "*"

     <DataGrid>           
        <DataGrid.Columns>
            <DataGridTextColumn Width="*" Header="Publication date"/>
            <DataGridTextColumn Width="*" Header="A very large field to be displayed"/>
            <DataGridTextColumn Width="*" Header="N° Omega" />
            <DataGridTextColumn Width="*" Header="Crée le" />
            <DataGridTextColumn Width="*" Header="Login" />
            <DataGridTextColumn Width="*" Header="Demandeur" />
            <DataGridTextColumn Width="*" Header="Type" />
            <DataGridTextColumn Width="*" Header="Status" />
        </DataGrid.Columns>
    </DataGrid>
  

Ответ №2:

Другой способ, которым вы могли бы это сделать, — создать стиль и использовать его для применения к DataGrid

     <Style x:Key="DynamicGridColumns" TargetType="DataGrid">
        <Setter Property="ColumnWidth" Value="*" />
    </Style>

    <DataGrid Style="{StaticResource DynamicGridColumns}">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Publication date"/>
            <DataGridTextColumn Header="A very large field to be displayed"/>
            <DataGridTextColumn Header="N° Omega" />
            <DataGridTextColumn Header="Crée le" />
            <DataGridTextColumn Header="Login" />
            <DataGridTextColumn Header="Demandeur" />
            <DataGridTextColumn Header="Type" />
            <DataGridTextColumn Header="Status" />
        </DataGrid.Columns>
    </DataGrid>