2

[情况]

我有一个自定义项目控件,我将其添加到堆栈面板,之后可以通过拖动自由移动。

public partial class CustomItem: UserControl
{
    private bool IsDragging { get; set; }
    private Point clickPosition;
    public CustomItem()
    {
        InitializeComponent();
        this.DataContext = this;
        this.MouseLeftButtonDown += (s, ea) =>
        {

            clickPosition = ea.GetPosition(this.LayoutRoot);
            this.CaptureMouse();
            IsDragging = true;
        };
        this.MouseMove += (s, ea) =>
        {
            if (IsDragging)
            {                    
                this.transFormThisShit.X = ea.GetPosition(this).X - clickPosition.X;
                this.transFormThisShit.Y = ea.GetPosition(this).Y - clickPosition.Y;
            }
        };
        this.MouseLeftButtonUp += (s, ea) =>
        {
            this.ReleaseMouseCapture();
            IsDragging = false;
        };                      
    }

[问题]

添加 3 个项目后,我将第一个项目拖到第二个或第三个项目上,它跳到它后面。

当我将第二个项目拖到第一个项目上时,它在前面,但是当我将它拖到第三个项目上时,它在它后面。

我怎样才能使控件拖动始终位于可视化树的顶部?

4

2 回答 2

2

您可以将被拖动项目的ZIndex值设置为高于其他项目。数字越大,项目离屏幕越近,因此最小的数字将位于底部。

于 2011-05-20T19:28:14.423 回答
0

Canvas.ZIndex当您开始拖动元素时,使用以下代码将其属性设置为大于 0 的值:

Canvas.SetZIndex(element,99);

并在完成拖动后清除它:

element.ClearValue(Canvas.ZIndex);

那应该这样做。

于 2011-05-20T19:32:59.893 回答