Установите управление на вершину самого silverlight
[Положение]
У меня есть пользовательский элемент управления, который я добавляю на панель стека и после этого могу свободно перемещаться с помощью перетаскивания.
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 элемента и перетаскиваю первый элемент поверх второго или третьего, он переходит за ним.
Когда я перетаскиваю второй элемент поверх первого, он идет впереди, но когда я перетаскиваю его над третьим, он идет позади него.
Как сделать так, чтобы перетаскивание элемента управления всегда было сверху визуального дерева?
2 ответа
Вы можете установить значение ZIndex перетаскиваемого элемента выше, чем другие. Чем выше число, тем "ближе" элемент к экрану, поэтому наименьшее число будет внизу.
Используйте следующий код, чтобы установить его Canvas.ZIndex
свойство к чему-то больше 0, когда вы начинаете перетаскивать ваш элемент:
Canvas.SetZIndex(element,99);
и очистите его, когда закончите перетаскивание:
element.ClearValue(Canvas.ZIndex);
Это должно сделать это.