Я пытаюсь создать свой собственный элемент управления. И я застрял в добавлении полос прокрутки к нему.ScrollBar Приложение для Windows Store
В целях тестирования я жестко закодировал значения полосы прокрутки.
Вот мой класс:
public sealed class BarrelPanel : Control
{
public static readonly DependencyProperty VerticalScrollBarVisibilityProperty =
DependencyProperty.Register(
"VerticalScrollBarVisibility", typeof(Visibility),
typeof(BarrelPanel), null);
public Visibility VerticalScrollBarVisibility
{
get { return (Visibility)GetValue(VerticalScrollBarVisibilityProperty); }
set { SetValue(VerticalScrollBarVisibilityProperty, value); }
}
public BarrelPanel()
{
this.DefaultStyleKey = typeof(BarrelPanel);
}
}
А вот мой стиль:
<Style TargetType="local:BarrelPanel">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:BarrelPanel">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Background="{TemplateBinding Background}"/>
<ScrollBar Grid.Column="1" Maximum="10" Orientation="Vertical" Visibility="{TemplateBinding VerticalScrollBarVisibility}" ViewportSize="1"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Полоса прокрутки занимает часть сетки, когда я установить свойство видимости для включено:
<local:BarrelPanel HorizontalAlignment="Left" Background="White" Margin="722,212,0,0" VerticalScrollBarVisibility="Visible" VerticalAlignment="Top" Height="217" Width="150"/>
Пример:
Но он не показывает перетаскиваемый прямоугольник или кнопки навигации - почему?
Это просто учебное упражнение или что-то еще? Просто любопытно, почему вы не просто используете ScrollViewer для обработки ваших смещений/мер и т. Д. –
, потому что я не прокручиваю элементы, как обычно. Я хочу создать элемент управления в экспериментальных целях, который на основе смещения скроллера будет вращать элементы. Нечто похожее на сборщик данных в iOS – Cheese