2010-04-02 36 views
3

我在我的附加屬性SetXXX和GetXXX靜態方法上設置了斷點。在Xaml中,我已將值分配給附加屬性。不過,我期待Set或Get靜態方法被調用,但它們不是。附加的屬性按預期工作,如果我在代碼中調用SetXXX和GetXXX方法,那麼它的工作是預期的。爲什麼在XAML中不調用附加屬性Set和Get靜態方法?

爲什麼從Xaml設置時不調用這些方法? JDD。

JD。

回答

3

As JaredPar explained,當您使用XAML時,GetXXX/SetXXX方法不會被調用。

我想補充一點,雖然:

如果您需要跟蹤代碼更改附加屬性,你應該使用的元數據。您可以在元數據中設置一個callback,以在屬性更改時觸發,並在您的代碼中進行跟蹤。

+1

@Reed。參考第1點,我刪除了GetXXX和SetXXX方法,並且我得到一個XAMLParserException,表示XML名稱空間中不存在Attached屬性。所以看起來他們必須存在? – 2010-04-02 20:23:12

+0

@JD:你說得對 - 他們需要在那裏讓房產系統在設計師身上工作。這裏提到:http://msdn.microsoft.com/en-us/library/ms749011.aspx#custom我編輯刪除。但是,元數據回調是跟蹤屬性更改的正確方法,因爲XAML(和通常的綁定系統)永遠不會調用Set/Get方法。 – 2010-04-02 20:26:33

+0

謝謝,你的解釋廣告JaredPar後似乎有意義。 – 2010-04-02 20:37:34

5

當涉及到附加屬性時,XAML不理解普通屬性getter和setter。相反,它會直接轉到DependencyObject上的較低級別的API。即GetValueSetValue方法。

相關問題