将控件设置为最上面的银色灯光
本文关键字:控件 设置 | 更新日期: 2023-09-27 17:57:29
[情况]
我有一个自定义项目控件,我将其添加到堆栈面板中,然后可以通过拖动自由移动。
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个项目,并将第一个项目拖到第二个或第三个项目上后,它会跳到它后面。
当我把第二个项目拖过第一个项目时,它会在前面,但当我把它拖过第三个项目时它会在后面
如何使控件拖动始终位于视觉树的顶部?
您可以将被拖动项的ZIndex值设置为高于其他项。数字越高,项目离屏幕越近,因此最低的数字将位于底部。
当您开始拖动元素时,使用以下代码将其Canvas.ZIndex
属性设置为大于0:
Canvas.SetZIndex(element,99);
并在拖动完成后清除:
element.ClearValue(Canvas.ZIndex);
这样就可以了。