2011-05-20 73 views
0

嗨,我正在構建一個CustomControl,它有一堆依賴項屬性和幾個可視化部分,例如Canvas,TextBox等。 問題是,一旦賦值給依賴項屬性,我需要對可視元素執行某些操作,即我需要將新的依賴屬性的值添加到Canvas,但是當綁定開始並賦值時,ControlTemplate尚未應用,因此它崩潰。應用ControlTemplate後發生強制綁定?

什麼是解決這個問題的好方法?

謝謝。

回答

0

簡單的解決方案是在依賴項屬性處理程序中進行空檢查以防止崩潰,並覆蓋相關方法,在該方法中知道構建可視化樹(最有可能是OnApplyTemplate),並在那裏執行相同的操作來初始化你的視覺效果。

+0

Duh,它非常簡單,我的問題是我仍然不確定WPF控件的生命週期如何。在Dependency屬性的Changed事件處理程序上啓用斷點我可以看到它被多次設置,一些空值以及最後從我的綁定中設置的值。我認爲如果我在那裏做了一個空檢查,我會錯過綁定值。無論如何,謝謝。 – 2011-05-20 16:51:57

+0

那麼,組件的生命週期不是精確的科學,有很多因素到位。就像你的控件有多深的嵌套,它有什麼樣的父母(例如ListBox比起簡單的Grid有自己的生活等),你使用的是什麼樣的框架,你如何初始化你的ViewModel等等。 – dain 2011-05-20 17:02:46