【问题标题】:Why does DataGrid size columns differently in a "*" Grid column than a pixel value Grid column?为什么 DataGrid 在“*”网格列中的列大小与像素值网格列中的列大小不同?
【发布时间】:2019-04-15 09:57:33
【问题描述】:

我正在开发一个简单的应用程序,该应用程序在其中一个单元格中使用带有 DataGrid 的网格布局。奇怪的是,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 不同?

【问题讨论】:

  • 尝试为您的 DataGrids 设置 ColumnWidth
  • 尝试将右侧 DataGrid 的 ColumnWidth 设置为“*”、“Auto”,然后是“300”。没有导致列宽发生任何变化。

标签: c# wpf xaml datagrid auto


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2012-12-22
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多