J'apprends à développer des contrôles personnalisés pour UWP et je dois développer un contrôle qui contient un ScrollViewer. Le generic.xaml ressemble à ceci:Contrôle personnalisé UWP avec défilement
<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>
La classe cs correspondant est assez simple en ce moment.
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;
}
}
Dans mon contrôle je dois savoir quand l'utilisateur fera défiler le contenu, donc je pensais que je peux enregistrer une propriété a changé de rappel pour la propriété VerticalOffset de changeurs à l'aide RegisterPropertyChangedCallback. Je peux enregistrer le rappel dans la méthode OnApplyTemplate.
Ma question est où dois-je appeler le UnregisterPropertyChangedCallback correspondant? Je n'ai pas trouvé de méthode de déchargement (ou similaire) à redéfinir. Ou est-ce que mon approche est fausse et ce n'est pas la façon de faire les choses dans l'UWP?