【发布时间】:2017-02-13 16:59:15
【问题描述】:
我正在学习为 UWP 开发自定义控件,我必须开发一个包含 ScrollViewer 的控件。 generic.xaml 如下所示:
<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;
}
}
在我的控件中,我必须知道用户何时滚动内容,因此我认为我可以使用 RegisterPropertyChangedCallback 为滚动条的 VerticalOffset 属性注册属性更改回调。我可以在 OnApplyTemplate 方法中注册回调。
我的问题是我应该在哪里调用相应的 UnregisterPropertyChangedCallback?我找不到要覆盖的任何 Unload 方法(或类似方法)。还是我的方法是错误的,这不是 UWP 中做事的方式?
【问题讨论】: