Я изучаю разработку пользовательских элементов управления для UWP, и мне нужно разработать элемент управления, который содержит ScrollViewer. Generic.xaml выглядит следующим образом:Пользовательский контроль UWP со свитком
<Style TargetType="local:TemplatedScroller" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:TemplatedScroller">
<ScrollViewer x:Name="NumberScroller"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Соответствующий класс CS довольно просто прямо сейчас.
public sealed class TemplatedScroller : Control
{
public TemplatedScroller()
{
this.DefaultStyleKey = typeof(TemplatedScroller);
}
private ScrollViewer numberScroller;
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
numberScroller = GetTemplateChild("NumberScroller") as ScrollViewer;
}
}
В моем контроле я должен знать, когда пользователь будет прокручивать содержимое, так что я подумал, что я могу зарегистрировать свойство изменило функцию обратного вызова для недвижимости VerticalOffset скроллера, используя RegisterPropertyChangedCallback. Я могу зарегистрировать обратный вызов в методе OnApplyTemplate.
Мой вопрос: где я должен позвонить соответствующему UnregisterPropertyChangedCallback? Я не мог найти метод Unload (или аналогичный) для переопределения. Или мой подход неправильный, и это не способ сделать что-то в UWP?