为什么DataGrid在“*”Grid列中的列大小与像素值Grid列的大小不同?

问题描述 投票:1回答:1

我正在开发一个简单的应用程序,它在一个单元格中使用带有DataGrid的Grid布局。奇怪的是,DataGrid坚持要使其第一列的宽度比其内容小很多,尽管它设置为“”。问题似乎来自网格列宽度“”:如果我将其更改为像素值,则DataGrid的行为与预期一致。

其他一些帖子建议将DataGrid属性HorizontalAlignmentHorizontalContentAlignment设置为Stretch,或禁用HorizontalScrollBarVisibility,但这些都不适用于这种情况。

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="300"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <Label Content="Some specific width of content that's reasonably long"/>
        <DataGrid ItemsSource="{Binding Data}"
                  AutoGenerateColumns="False"
                  HeadersVisibility="None"
                  Grid.Row="1" Grid.Column="0">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Name}"
                                        Width="*"/>
                <DataGridTextColumn Binding="{Binding Cost}"/>
            </DataGrid.Columns>
        </DataGrid>

        <Label Content="Some specific width of content that's reasonably long"/>

        <DataGrid ItemsSource="{Binding Data}"
                  AutoGenerateColumns="False"
                  HeadersVisibility="None"
                  Grid.Row="1" Grid.Column="1">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Name}"
                                        Width="*"/>
                <DataGridTextColumn Binding="{Binding Cost}"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>

上面的代码产生了这种布局:https://imgur.com/a/cZcBUtD。左侧的DataGrid表现出我预期的方式,但仅仅因为它的GridColumn宽度设置为“300”。为什么有一个“*”的GridColumn width导致右侧显示的DataGrid不同?

c# wpf xaml datagrid auto
1个回答
0
投票

我刚刚尝试重新创建这个问题,但它似乎对我来说很好。这是否在另一个可能影响行为的网格中?

© www.soinside.com 2019 - 2024. All rights reserved.