0

リストボックスアイテムのBehaviorクラスがあります。

public class DragAndDropBehavior : Behavior<AllocationItem>
{
    protected override void OnAttached()
    {
        base.OnAttached();
        AssociatedObject.StartDrag += OnStartDrag;
    }

    protected override void OnDetaching()
    {
        base.OnDetaching();
        Cleanup(true);
    }
    // Some drag logic.
}

この動作では、アイテムのプレビューをチャートに移動し、必要に応じてこのチャートをスクロールします。このチャートをスクロールすると、ドラッグしている要素が一瞬でビューから消えます - ビューの範囲外です。そして、この瞬間、すべてのハンドラーが呼び出されるわけではありません。なぜ何か提案はありますか?

私はいくつかの更新があります。要素が非表示にOnDetaching()なると、メソッドが起動し、ドラッグのすべてのハンドラが削除されます。それで、質問のチャンス -OnDetaching()要素の非表示を無視する方法は?

4

1 に答える 1

0

この問題を解決しました。カスタム パネル (チャート) に配置されたアイテムと、このカスタム パネルが MeasureOverride(Size size) メソッドをオーバーライドしました。すべてのアイテムが更新され、非表示のアイテムがビューから破棄されます => OnDetaching() 動作メソッドが起動します。カスタムパネルにドラッグのフラグを追加することで解決しました。このフラグの値によって、目に見えない要素を処分する必要があるかどうかを解決します。

于 2013-06-18T14:31:41.493 に答える