Почему столбцы размера DataGrid отличаются в столбце "*" таблицы по сравнению с столбцом сетки значений в пикселях? - PullRequest
1 голос
/ 15 апреля 2019

Я работаю над простым приложением, которое использует макет 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 на правом дисплее по-другому?

1 Ответ

0 голосов
/ 17 апреля 2019

Я только что попытался воссоздать проблему, но она, кажется, ведет себя хорошо для меня.Это в другой сетке, которая может повлиять на поведение?

...