我正在處理非常複雜的WPF窗口,並且有很多控件。 在我的上下文中,我們選擇的用戶體驗是首先顯示窗口,然後加載數據和數據綁定(同時顯示進度條)。InitializeComponent/ShowDialog和databinding
使用WPF的幫助下追蹤在Visual Studio中,我注意到,數據綁定被調用兩次所示的窗口前:
- 當我們調用的InitializeComponent(),它解析XAML。
- 當我們調用ShowDialog()。
因爲還沒有數據,所以數據綁定機制需要一段時間來嘗試回退和默認值。
爲了加快窗口顯示給用戶,是否有辦法禁用WPF數據綁定,直到顯示窗口?
在此先感謝。
編輯1: 我有更多的400控件的形式。對InitializeComponent()的調用需要700ms才能完成。我不知道這與數據綁定有多大關係,可能是我錯了。
編輯2: 根據dotTrace探查,InitilizeComponent()WPF成本65.43%在分爲:
- 34.25%System.Windows
- 22.57%System.Windows.Markup
- 8.29%其他
編輯3: 對於InitializeComponent(),我們降低到了272毫秒。 我們有很多轉換器,現在全部使用singletons。
你能在每個階段提供毫秒數嗎? – Artru
有關InitializeComponent的信息,請參閱編輯1。在窗體關閉之前,ShowDialog不會返回,這可能有點難以衡量。 –