如何使数据网格的宽度自适应父控件的宽度?

3

在一个网格内放置DataGrid,我希望DataGrid的宽度和列能够自适应其父控件。

因此,如果用户决定增加窗口宽度,我该如何让网格宽度及其列也随之增加?

<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>

你可以尝试在DataGrid中添加ColumnWidth="*" - dariusc
移除你的硬编码 Width="525" - Chris W.
@Chris 和 @Darius:没有帮助。列宽仍保持相同大小。 - Antoine Meltzheim
1
尝试在所有列上设置“Width =”*“”。 - Nitin
@nit:看起来运行良好!谢谢。 - Antoine Meltzheim
当然可以。让我把这个作为答案添加,以便帮助其他人。 - Nitin
2个回答

5

将每个列上的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>

1
另一种方法是创建一个样式并将其应用于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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接