Я работаю над простым приложением, которое использует макет Grid с DataGrid в одной из ячеек. Как ни странно, DataGrid настаивал на том, чтобы ширина его первого столбца была намного меньше его содержимого, несмотря на то, что он был установлен на "". Кажется, проблема связана с шириной столбца Grid, равной "": если я изменю ее на значение в пикселях, 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
на правом дисплее по-другому?