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 つの項目を追加した後、最初の項目を 2 番目または 3 番目の項目にドラッグすると、後ろにジャンプします。

2 番目のアイテムを最初のアイテムの上にドラッグすると前に移動しますが、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 に答える