WPF:如何在Canvas中安装拇指行为?

时间:2009-05-12 15:51:19

标签: .net wpf canvas controltemplate

我想要一个支持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>

1 个答案:

答案 0 :(得分:1)

任何面板派生控件都没有模板属性,因为它们没有可见的组件。

您可以像使用UserControl一样使用Thumb控件,只需根据Thumb的delta调整UserControl的高度/宽度。要使其正常工作,您需要获取相对于usercontrol父级的鼠标位置,否则它将无法正常工作。即:e.GetLocation(this.Parent);

你也应该调整拇指的高度/宽度。最好也将光标设置在它上面。