我想要一个支持DragDelta事件的Canvas。我对如何做到这一点的第一个想法是制作一个包含拇指的ControlTemplate。但我不知道如何正确地做到这一点。如何更改下面的XAML以使其编译,以及安装DragDelta事件处理程序的正确方法是什么?
<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>
答案 0 :(得分:1)
任何面板派生控件都没有模板属性,因为它们没有可见的组件。
您可以像使用UserControl一样使用Thumb控件,只需根据Thumb的delta调整UserControl的高度/宽度。要使其正常工作,您需要获取相对于usercontrol父级的鼠标位置,否则它将无法正常工作。即:e.GetLocation(this.Parent);
你也应该调整拇指的高度/宽度。最好也将光标设置在它上面。