Je voudrais avoir un canevas qui supporte l'événement DragDelta. Ma première idée de comment faire ceci était de faire un ControlTemplate qui inclut un pouce. Mais je ne sais pas comment le faire correctement. Comment puis-je modifier le code XAML ci-dessous pour le compiler et quelle est la bonne façon d'installer le gestionnaire d'événements DragDelta?WPF: Comment installer le comportement du pouce dans un canevas?
<UserControl.Resources>
<ControlTemplate x:Key="Transparent">
<Rectangle Fill="Transparent"/>
</ControlTemplate>
<ControlTemplate x:Key="ThumbCanvas" TargetType="{x:Type Canvas}">
<Grid>
<Thumb x:Name="CanvasThumb" Template="{StaticResource Transparent}" DragDelta="CanvasThumb_DragDelta"/>
<ContentPresenter Content="{TemplateBinding Content}"/>
<!--error MC3011: Cannot find the static member 'ContentProperty' on the type 'Canvas'.-->
</Grid>
</ControlTemplate>
</UserControl.Resources>
J'ai supposé que si j'avais simplement un pouce sous la toile que la toile obtiendrait l'événement de la souris et non le pouce. Non? BTW, je ne vais pas utiliser le pouce pour le redimensionnement, mais simplement pour faire la distinction entre cliquer et faire glisser sur la toile. – Qwertie
Il s'avère que Canvas ne reçoit pas les événements de la souris (et ils passent à travers) si elle ne reçoit pas de valeur pour l'arrière-plan. Malheureusement, les événements MouseDown, MouseUp, MouseMove standard ne fonctionnent pas correctement pour moi lorsque j'attache des gestionnaires au Thumb ... – Qwertie
Mise à jour: Lorsque j'attache des événements à un Thumb, je dois gérer PreviewMouseDown et PreviewMouseMove au lieu de MouseDown et MouseMove, comme le pouce bloque les événements réguliers. – Qwertie