WPF DataGrid MaxWidth установлен на 100% доступного пространства - PullRequest
1 голос
/ 27 октября 2011

У меня необычная проблема, которую я не могу решить. Я хочу использовать DataGrid с фиксированными размерами столбцов, которые будут соответствовать родительскому размеру. Структура выглядит примерно так:

UserControl правильно устанавливает размеры ScrollViewer для родительского элемента, если только он не достиг MinWidth, после чего появляется полоса прокрутки. Все элементы управления в UserControl растягиваются при изменении размера окна. Только индивидуальный это DataGrid. Он не хочет включать горизонтальную прокрутку, как бы я ни старался, он всегда масштабирует UserControl до его ширины. Это, конечно, включает прокрутку в UserControl, которую я хочу предотвратить.

короче говоря, я хочу, чтобы DataGrid занимал 100% доступной ширины, но не более.

    <Window>
        <ScrollViewer>
            <UserControl>
                <Grid>
                    <DataGrid>

                    </DataGrid>
                </Grid>
            </UserControl>
        </ScrollViewer>
    </Window>

Я тоже пытался сделать что-то подобное, но не получилось: (

    <Window>
        <ScrollViewer>
            <UserControl>
                <Grid>
                    <ScrollViewer>
                        <DockPanel>
                            <DataGrid>

                            </DataGrid>
                        </DockPanel>
                    </ScrollViewer>
                </Grid>
            </UserControl>
        </ScrollViewer>
    </Window>

Кроме того, подключение к SizeChanged и первоначальная установка Width of DataGrid для небольшого события с фиксированным значением не сделали тест. Возможно, потому что я работаю с кодом, производным от UserControl.

Мне нужны предложения.

1 Ответ

2 голосов
/ 27 октября 2011

Полностью избавьтесь от ScrollViewer вокруг DataGrid, это приведет к тому, что DataGrid не будет знать ширину своего родительского элемента управления - он сообщает DataGrid, что у него бесконечное пространство.

Просто попробуйте разместить DataGrid, как в первом примере, и установить HorizontalAlignment=Stretch в DataGrid. Это должно быть по умолчанию в Grid, содержащем DataGrid, но установите его там просто для уверенности. Также убедитесь, что у вас не установлено свойство width (MinWidth должно быть в порядке).

Отредактируйте свой код в вопросе, как только вы дадите ему шанс.

...