Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将控件设置为最上面的silverlight_C#_Silverlight_Drag_Visual Tree - Fatal编程技术网

C# 将控件设置为最上面的silverlight

C# 将控件设置为最上面的silverlight,c#,silverlight,drag,visual-tree,C#,Silverlight,Drag,Visual Tree,[情况] 我有一个自定义项控件,我将其添加到堆栈面板中,然后可以通过拖动来自由移动 public partial class CustomItem: UserControl { private bool IsDragging { get; set; } private Point clickPosition; public CustomItem() { InitializeComponent(); this.DataContext

[情况]

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

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个项目后,将第一个项目拖到第二个或第三个项目上,它会跳到后面

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


如何使控件拖动始终位于可视化树的顶部?

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

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

Canvas.SetZIndex(element,99);
并在完成拖动后将其清除:

element.ClearValue(Canvas.ZIndex);

应该可以了。

太好了!只需将网格放在画布中,并将其属性设置为1(使用this.SetValue),就可以了!非常感谢。遗憾的是,在我得到关于我的另一个问题的答案之前,这还不能完美地工作: