【发布时间】:2019-04-15 09:57:33
【问题描述】:
我正在开发一个简单的应用程序,该应用程序在其中一个单元格中使用带有 DataGrid 的网格布局。奇怪的是,DataGrid 坚持让它的第一列的宽度比它的内容小得多,尽管它被设置为“”。问题似乎也来自网格列宽为“”:如果我将其更改为像素值,则 DataGrid 的行为符合预期。
其他一些帖子建议将DataGrid 属性HorizontalAlignment 或HorizontalContentAlignment 设置为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”。没有导致列宽发生任何变化。