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

时间:2019-04-15 09:57:34

标签: c# wpf xaml datagrid auto

我正在开发一个简单的应用程序,该应用程序在其中一个单元格中使用带有DataGrid的Grid布局。奇怪的是,尽管将DataGrid的宽度设置为“ ”,但它仍然坚持使其第一列的宽度小于其内容的宽度。问题似乎也来自Grid列宽度也为“ ”:如果将其更改为像素值,则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显示不同?

1 个答案:

答案 0 :(得分:0)

我刚刚尝试重现此问题,但对我来说似乎还不错。这是否在另一个可能影响行为的网格中?