Автоматическое изменение размеров wpf-элементов с помощью полос прокрутки (текстовое поле, список) vb - PullRequest
1 голос
/ 10 сентября 2010

У меня проблема с тем, что у меня есть элементы, такие как списки и поля Rich Text, которые я хочу автоматически установить в xaml в соответствии с размером окна, но я хочу, чтобы он только изменял размер до размераокно и затем поместите полосы прокрутки, если содержание больше, чем это.

К сожалению, единственный способ, которым я могу заставить полосы прокрутки работать, состоит в том, если я устанавливаю определенную высоту списка / расширенного текстового поля (которое неработать, потому что я хочу, чтобы он автоматически изменял размеры до высоты сетки, в которой он содержится, что обычно является высотой окна (авто).

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 10 сентября 2010

Вам не нужно использовать фиксированные значения для Width и Height - вам лучше указать минимальную ширину / высоту для ваших элементов управления, используя свойства MinWidth и MinHeight. Затем попробуйте макет, похожий на этот:

<Window>
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Grid>

            <ListBox MinWidth="500" MinHeight="250"/>

            <!-- any other controls... -->

        </Grid>
    </ScrollViewer>
</Window>

Grid обычно использует все пространство, которое получает, если его свойства выравнивания установлены на Stretch и если хотя бы для одной строки / столбца установлено значение звездного размера . В этом случае неявно создается только одна строка и один столбец, оба по умолчанию имеют размер звезды.
Чтобы заставить ScrollViewer работать, вам нужно каким-то образом установить минимальный размер ваших элементов управления контентом, поскольку в противном случае ScrollViewer не не знает , когда активировать ScrollBar s. В приведенном выше примере я сделал это, используя MinHeight и MinWidth свойства ListBox, но вы также можете установить эти свойства для Grid 'RowDefinition s и / или ColumnDefinition s. .

Теперь, если вы измените размер окна, так что Width станет меньше, чем 500, вы увидите, что появятся полосы прокрутки. Просто проверьте это.

...