我正在創建一個WPF自定義控件,並遇到了一種情況。很多代碼在控制初始化之前不會執行:if (this.IsInitialized) { ... }
但是,這對我的設計器造成了一個問題,因爲它從不初始化。使用DesignerProperties.GetIsInDesignMode(...)可能出現的問題?
我只是想知道在自定義控件中使用DesignerProperties.GetIsInDesignMode()
是否正常使用,如果是這樣,我是否應該警惕任何陷阱?我問這個問題是因爲在自定義控件中設計器特定的檢查/代碼似乎很「髒」。
我想一個好的測量棒將知道微軟是否在他們的任何控制代碼中使用Designer特定的代碼(而不是屬性)?
我使用依賴屬性和只讀依賴項屬性重......這只是我不得不警惕的OnPropertyChanged方法與將IsInitialized檢查,以避免與屬性被設置的順序問題。 ''不同於'。相信我,我從來沒有必要使用IsInitialized,除非在這種情況下,這兩個DP交織在一起並且它們的調用順序在pre-init會導致問題(如果沒有說明的話)。 –
2011-12-21 21:50:15
@ m-y您不能檢查空/無效狀態,而是在那個時候?是什麼導致它在設計時失敗,但在運行時工作? – 2011-12-21 21:53:01
基本上我有一個情況,我有2 DP不能相等。它們是字符值,所以它們不能爲空作爲默認值(而是它們是'+'和' - ')。現在,如果我將它們設置在XAML中,那麼它們有可能暫時等於彼此(拋出異常)pre-init ...但是,如果等到初始化後我可以正確檢查它們的平等性......問題是設計師不初始化控制。我想我只需要使用設計器特定的代碼啊。 – 2011-12-21 23:48:45