Бесконечный элемент управления с ScrollBar, вложенный в ScrollViewer - PullRequest
1 голос
/ 22 февраля 2011

Может ли кто-нибудь объяснить мне, почему следующий XAML не работает так, как я ожидаю, и есть ли какие-то обходные пути для него?

Я ожидаю, что TextBox будет учитывать свойства Min- и MaxHeight RowDefinition, которые он использует. Вместо этого его MaxHeight используется для маскировки доступного пространства, но в то же время его содержимое растет за маской ... Эхххх?!

Я ожидаю, что поведение будет таким же, как когда вы задаете для RowDefinition бесконечную высоту, две полосы прокрутки. Одна полоса прокрутки для текстового поля и одна для остальной части экрана.

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="40" />
            <RowDefinition MinHeight="100" MaxHeight="200" />
            <RowDefinition Height="40" />
        </Grid.RowDefinitions>

        <Button Content="Top" />

        <TextBox Grid.Row="1" AcceptsReturn="True" xml:space="preserve" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">

            ***Enter a lot of text including enters here!***

        </TextBox>

        <Button Content="Bottom" Grid.Row="2" />
    </Grid>
</ScrollViewer>

Надеюсь, что кто-то может помочь мне с этой проблемой.

Спасибо

Wim

Ответы [ 2 ]

0 голосов
/ 23 февраля 2011

Это действительно странное поведение.

Похоже на комбинацию самой Grid, не имеющей ограничений по размеру (находящейся внутри ScrollViewer и не имеющей высоты), и RowDefinition, не имеющей высоты, установленной в абсолютное значение.неправильно ограничивает TextBox.

Если вам абсолютно необходимо это созвездие и вы не хотите зависеть ни от чего другого, вы можете сделать это:

<RowDefinition MinHeight="100" MaxHeight="200" Height="{Binding ActualHeight, RelativeSource={RelativeSource Self}}"/>
0 голосов
/ 22 февраля 2011

Установка минимальной и максимальной высоты в TextBox позволяет правильно отображать полосы прокрутки.

                <TextBox Grid.Row="1"
                     AcceptsReturn="True"
                     xml:space="preserve"
                     MinHeight="100"
                     MaxHeight="200"
                     VerticalScrollBarVisibility="Auto"
                     HorizontalScrollBarVisibility="Auto">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...