4
我已經使用了擴展控件來創建某種滑出式面板,其中包含一些過濾選項。用戶可以選擇將該擴展器「固定」到視圖。一切都很順利,但現在我想知道當用戶點擊擴展器的某個地方時,如何讓擴展器自動關閉。我嘗試了LostFocus和其他一些活動,但無濟於事。當用戶點擊其他地方時哪個事件可以通知我?自動關閉擴展器
(就目前而言,我只是用後+封閉擴張的計時器 - 鼠標2秒後留下的擴展,但我寧願其他解決方案)
在此先感謝。
我已經使用了擴展控件來創建某種滑出式面板,其中包含一些過濾選項。用戶可以選擇將該擴展器「固定」到視圖。一切都很順利,但現在我想知道當用戶點擊擴展器的某個地方時,如何讓擴展器自動關閉。我嘗試了LostFocus和其他一些活動,但無濟於事。當用戶點擊其他地方時哪個事件可以通知我?自動關閉擴展器
(就目前而言,我只是用後+封閉擴張的計時器 - 鼠標2秒後留下的擴展,但我寧願其他解決方案)
在此先感謝。
假設你Expander
被命名爲「yourExpander」你可以這樣做:
<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;
}
我不得不使用e.OriginalSource而不是e.Source,否則我會始終將Window作爲源代碼(本例中是用戶控件)。我會將它標記爲答案:) 但是我仍然有一些datetimepickers和comboboxes的問題。當選擇這些控件中的值時,它們不被視爲後代,所以我的擴展器關閉。 – Dimitris
爲我完美工作,謝謝 –