#715 – 在Canvas中使用Thumb控件实现拖动目标的功能(Using the Thumb Control to Drag Objects on a Canvas)

本文介绍如何利用WPF中的Thumb控件实现Canvas上对象的拖拽功能。通过设置Thumb控件的Template属性包含所需拖动的对象,并在DragDelta事件中更新对象位置。

原文地址:https://wpf.2000things.com/2012/12/19/715-using-the-thumb-control-to-drag-objects-on-a-canvas/

你可以使用Thumb 控件在Canvas 上实现简单的拖动控件功能。设置Thumb 控件的Template ,使Template 包含你需要拖动的控件,然后在DragDelta 事件中处理。

下面的例子,在Canvas 面板中包含了三个控件,每一个都被包裹在了Thumb 控件中并且可以被拖动。

<Canvas>
    <Thumb Canvas.Left="10" Canvas.Top="20" Canvas.ZIndex="99"  DragDelta="Thumb_DragDelta">
        <Thumb.Template>
            <ControlTemplate>
                <Image Width="60" Height="60" Source="Crown.jpg"/>
            </ControlTemplate>
        </Thumb.Template>
    </Thumb>
    <Thumb Canvas.Left="100" Canvas.Top="60" DragDelta="Thumb_DragDelta">
        <Thumb.Template>
            <ControlTemplate>
                <Image Width="80" Height="100" Source="HenryII.jpg"/>
            </ControlTemplate>
        </Thumb.Template>
    </Thumb>
    <Thumb Canvas.Left="30" Canvas.Top="180" DragDelta="Thumb_DragDelta">
        <Thumb.Template>
            <ControlTemplate>
                <Label Content="Westminster, 19-Dec-1154"/>
            </ControlTemplate>
        </Thumb.Template>
    </Thumb>
</Canvas>
Thumb 控件的 DragDelta 事件处理函数中,设置控件的位置:

private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
    UIElement thumb = e.Source as UIElement;
 
    Canvas.SetLeft(thumb, Canvas.GetLeft(thumb) + e.HorizontalChange);
    Canvas.SetTop(thumb, Canvas.GetTop(thumb) + e.VerticalChange);
}
715-001
715-002

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值