Установите управление на вершину самого silverlight - PullRequest
2 голосов
/ 20 мая 2011

[Ситуация]

У меня есть пользовательский элемент управления, который я добавляю на панель стека и после этого могу свободно перемещаться, перетаскивая.

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 ]

2 голосов
/ 20 мая 2011

Вы можете установить значение ZIndex объекта, который перетаскивается, выше, чем другие.Чем выше число, тем «ближе» элемент к экрану, поэтому наименьшее число будет внизу.

0 голосов
/ 20 мая 2011

Используйте следующий код, чтобы установить для свойства Canvas.ZIndex значение больше 0, когда вы начинаете перетаскивать свой элемент:

Canvas.SetZIndex(element,99);

и очистите его, когда закончите перетаскивание:

element.ClearValue(Canvas.ZIndex);

Это должно сделать это.

...