zoukankan      html  css  js  c++  java
  • 【C#/WPF】用Thumb做可拖拽的UI控件

    需求:简单的可拖拽的图片

    使用System.Windows.Controls.Primitives.Thumb类

    前台:

    <Canvas x:Name="g">
        <Thumb Canvas.Left="10" Canvas.Top="20" Canvas.ZIndex="99"  DragDelta="Thumb_DragDelta">
            <Thumb.Template>
                <ControlTemplate>
                    <Image Width="60" Height="60" Source="你的图片路径"/>
                </ControlTemplate>
            </Thumb.Template>
        </Thumb>
    </Canvas>

    后台:

    
    private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
    {
        UIElement thumb = e.Source as UIElement;
    
        //    防止Thumb控件被拖出容器。  
        //    if (nTop <= 0)
        //        nTop = 0;
        //    if (nTop >= (g.Height - myThumb.Height))
        //        nTop = g.Height - myThumb.Height;
        //    if (nLeft <= 0)
        //        nLeft = 0;
        //    if (nLeft >= (g.Width - myThumb.Width))
        //        nLeft = g.Width - myThumb.Width;
        //    Canvas.SetTop(myThumb, nTop);
        //    Canvas.SetLeft(myThumb, nLeft);
        //    tt.Text = "Top:" + nTop.ToString() + "
    Left:" + nLeft.ToString();
    
    
        Canvas.SetLeft(thumb, Canvas.GetLeft(thumb) + e.HorizontalChange);
        Canvas.SetTop(thumb, Canvas.GetTop(thumb) + e.VerticalChange);
    }

    坑点:

    • Thumb必须是一个Canvas的子类,因为它依赖该Canvas来定位。
    • Thumb必须协商Canvas.Left和Canvas.Top,因为它依赖该Vanvas来定位,否则无法拖动!

    重要的参考:

  • 相关阅读:
    HTML学习基础(一)
    初识C#
    SQL小知识
    jQuery(四)
    jQuery(三)
    认识jQuery(二)
    认识Jquery
    初识Javascript
    初识HTML
    博客,你好!
  • 原文地址:https://www.cnblogs.com/guxin/p/csharp-wpf-drag-and-drop-ui-control-by-thumb.html
Copyright © 2011-2022 走看看