5

エキスパンダー コントロールを使用して、いくつかのフィルター オプションを保持するある種のスライド アウト パネルを作成しました。ユーザーには、このエキスパンダーをビューに「固定」するオプションがあります。すべてうまくいきましたが、ユーザーがエキスパンダーのどこかをクリックしたときにエキスパンダーを自動的に閉じる方法を知りたいと思います。LostFocus と他のいくつかのイベントを試しましたが、役に立ちませんでした。ユーザーが別の場所をクリックしたときに通知できるイベントはどれですか?

(今のところ、マウスがエキスパンダーを離れてから +-2 秒後にエキスパンダーを閉じるタイマーを使用していますが、他の解決策をお勧めします)

前もって感謝します。

4

2 に答える 2

10

あなたの名前が「yourExpander」であると仮定すると、Expanderこれを行うことができます。

<Window PreviewMouseDown="Window_PreviewMouseDown"

エキスパンダーの子孫でない場合e.OriginalSourceは、エキスパンダーを閉じます。

private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    Visual visual = e.OriginalSource as Visual;

    if (!visual.IsDescendantOf(yourExpander))
        yourExpander.IsExpanded = false;
}
于 2012-05-24T14:01:54.167 に答える