2014-09-30 38 views
1

我有一個依賴屬性:結合依賴屬性魔法

public bool IsApproved //Dependency property 
{ 
    get { return (bool)GetValue(IsApprovedProperty); } 
    set { SetValue(IsApprovedProperty, value); } 
} 

public static readonly DependencyProperty IsApprovedProperty = 
    DependencyProperty.Register("IsApproved", typeof(bool), typeof(MyClass), new UIPropertyMetadata(true)); 

而且2控件綁定到這個屬性:

當我檢查/取消選中該複選框的mypanel的可見性的變化和它的確定。 但是,當我將斷點放入IsApproved的get和set時,它永遠不會停在那裏。

它是如何工作的?

感謝

回答

1

的WPF的數據綁定系統直接通過SetValue()修改DependencyProperties,不通過你的財產setter方法去(這實際上並不需要存在)。

要查看更改,請在UIPropertyMetadata中添加回調。

4

MSDN

因爲對於屬性設置當前WPF實現XAML處理器行爲 的繞過包裝完全,你不應該 提出任何額外的邏輯到包裝的集定義爲 您自定義依賴項屬性。如果在定義集 中放入這樣的邏輯,那麼當在XAML中設置屬性 而不是在代碼中時,邏輯將不會執行。

換句話說,框架不使用CLR包裝器屬性。如果直接通過代碼設置CLR屬性,那麼set邏輯當然會運行。要檢測對該屬性的框架更改,您需要在註冊期間使用元數據屬性註冊PropertyChanged回調。