Прокрутка и декорирование содержимого

Необходимость в прокрутке возникает, если визуальное содержимое выходит за границы родительского элемента[3]. Панель прокрутки – это элемент управления содержимым ScrollViewer. Его свойства VerticalScrollBarVisibility и HorizontalScrollBarVisibility управляют видимостью полос прокрутки и принимают значение из перечисления ScrollBarVisibility:

1. Visible – полоса прокрутки видима, даже если в ней нет необходимости.

2. Auto – полоса прокрутки появляется только тогда, когда содержимое не помещается в визуальных границах панели прокрутки.

3. Hidden – полоса прокрутки не видна, но прокрутку можно выполнить в коде или используя клавиатуру.

4. Disabled – полоса прокрутки не видна, прокрутку выполнить нельзя.

Элемент ScrollViewer имеет методы для программной прокрутки. Вертикальная прокрутка выполняется при помощи методов LineUp(), LineDown(), PageUp(), PageDown(), ScrollToHome(), ScrollToEnd(), а горизонтальная прокрутка – при помощи LineLeft(), LineRight(), PageLeft(), PageRight(), ScrollToHorizontalOffset(), ScrollToLeftEnd(), ScrollToRightEnd().

Одной из особенностей ScrollViewer является возможность участия содержимого в процессе прокрутки. Такое содержимое должно быть представлено объектом, реализующим интерфейс IScrollInfo. Кроме этого, необходимо установить свойство ScrollViewer.CanContentScroll в значение true. Интерфейс IScrollInfo реализуют всего несколько элементов. Одним из них является контейнер StackPanel. Его реализация интерфейса IScrollInfo обеспечивает логическую прокрутку, которая осуществляет переход от элемента к элементу, а не от строки к строке.

<ScrollViewer CanContentScroll="True">

<StackPanel>

<Button Height="100" Content="1"/>

<Button Height="100" Content="2"/>

<Button Height="100" Content="3"/>

<Button Height="100" Content="4"/>

</StackPanel>

</ScrollViewer>

Декораторы обычно служат для того, чтобы графически разнообразить и украсить область вокруг объекта. Все декораторы являются наследниками класса System.Windows.Controls.Decorator. Большинство декораторов – это специальные классы, предназначенные для использования вместе с определёнными элементами управления. Есть два общих декоратора, применять которые имеет смысл при создании пользовательских интерфейсов: Border и Viewbox.

Декоратор Border принимает вложенное содержимое и добавляет к нему фон или рамку. Для управления Border можно использовать свойства размера и отступа, а также некоторые особые свойства:

Background – задаёт фон декоратора с помощью объекта Brush.

BorderBrush, BorderThickness – свойства задают цвет и ширину рамки. Чтобы показать рамку, нужно задать оба свойства. У рамки можно отдельно настроить ширину каждой из четырёх сторон.

CornerRadius – позволяет закруглить углы рамки. Можно отдельно настроить радиус закругления каждого угла.

<Border Margin="20" Padding="10" VerticalAlignment="Top"

Background="LightYellow" BorderBrush="SteelBlue"

BorderThickness="10,5,10,5" CornerRadius="5">

<StackPanel>

<Button Margin="5" Content="One" />

<Button Margin="5" Content="Two" />

<Button Margin="5" Content="Three" />

</StackPanel>

</Border>

Рис. 11. Декоратор Border.

Декоратор Viewbox масштабирует своё содержимое так, чтобы оно умещалось в этом декораторе. По умолчанию Viewbox выполняет масштабирование, которое сохраняет пропорции содержимого. Это поведение можно изменить при помощи свойства Stretch. Например, если свойству присвоить значение Fill, содержимое внутри Viewbox будет растянуто в обоих направлениях. Кроме этого, можно использовать свойство StretchDirection. Оно управляет масштабированием, когда содержимое достаточно мало (или слишком велико), чтобы уместиться в Viewbox.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: