2012-01-05 63 views
1

對於wpf上的每個UI控件,都有一個「加載」事件。假設我有一個用戶控件和其他控件列表,比如Combobox。現在,如果我爲「usercontrol」和「Combobox」捕獲加載事件,那麼加載事件首先發生在Usercontrol然後是Combo box,這意味着當用戶控件已經加載時,它的子元素可能不是加載完成。但是,我想捕獲全局加載事件,這意味着只有在所有控件加載成功時纔會發生加載事件。如何做到這一點?提前致謝。如何捕捉WPF中的全局加載事件

+1

你能告訴我們 - 你想達到什麼目的?如果它是使用GetTemplatedChild試圖訪問的部件的模板化控件,則只有在控件加載的所有部件完全加載時纔會觸發控制加載。 – 2012-01-05 09:30:59

+0

我很同意@德米特里:你可能試圖在這裏做非正統的事情......請告訴我們最終的目標。 – 2012-01-05 10:06:25

回答

0

沒有全局的Loaded事件,您聲明'加載事件首先發生在Usercontrol然後是組合框',這可能是由於您註冊這些事件的順序。你究竟想達到什麼目的?

其他可能對您有用的事件是LayoutUpdated,每次修改視覺樹時都會觸發此事件。您可以註冊一個處理程序,首次捕獲此事件,然後檢查UI狀態以確定您的UI何時初始呈現。

但是,如果您在UI中執行相當複雜或特殊的操作,通常只需要使用這些技術,例如創建複雜的新控件。對於大多數應用程序,您不需要處理這些事件中的任何一個。

+0

說,我有20-30組合框,當他們正確加載我想要添加一些項目給他們每個人。現在,如果我在用戶控件的加載事件上執行此操作,那些組合框可能無法訪問(因爲它們尚未加載)。我想要一個事件,只有當用戶控件中的所有控件完全加載時纔會觸發... – Rana 2012-01-05 09:42:24

+0

爲什麼在添加項目之前需要等到它們被加載?您可以直接或通過綁定將它們添加到視覺樹/屏幕之前添加它們。 – ColinE 2012-01-05 09:53:31

+0

是的,我發現它可以o所有人都認爲只有在用戶控制加載/ initcomponent部分。控件不需要被渲染。謝謝。 – Rana 2012-01-05 18:20:43