2013-03-17 59 views
2

我有一個自定義類MyPerson。所有(相關)屬性都實現INotifyPropertyChanged。 我創建了一個UserControl來顯示它,並且它一切正常。綁定到像MyPerson.FirstName(一個字符串)這樣的屬性都可以工作 - 它們按預期方式顯示和更新(雙向綁定)。作爲DependencyProperty的自定義對象

現在我想在代碼隱藏中做更復雜的東西,所以我想創建一個帶有MyPerson的PropertyType的DependencyProperty,但我不知道如何構造DependencyProperty,特別是PropertyChangedCallback部分。

可以這樣做?怎麼會這樣?

+1

MSDN文檔顯示這本身。 http://msdn.microsoft.com/en-gb/library/ms753358.aspx如果您向下滾動到「使用屬性系統註冊屬性」部分,它將顯示一個自定義DP註冊類型爲「AquariumObject」的改變回調「OnUriChanged」 – Viv 2013-03-17 09:07:41

回答

0

閱讀這篇文章 - Custom Dependency Properties

喜歡的東西 -

public static readonly DependencyProperty MyPersonValueProperty = 
     DependencyProperty.Register("MyPersonValue", typeof(MyPerson), 
     typeof(MyPersonControl), new FrameworkPropertyMetadata(null, 
      FrameworkPropertyMetadataOptions.AffectsRender, 
       new PropertyChangedCallback(OnPersonChanged))); 

public MyPerson ThePerson 
{ 
    get { return (MyPerson)GetValue(MyPersonValueProperty); } 
    set { SetValue(MyPersonValueProperty, value); } 
} 

private static void OnPersonChanged(DependencyObject d, 
           DependencyPropertyChangedEventArgs e) 
{ 
    // Property change code here 
} 
+0

謝謝!公共靜態只讀的DependencyProperty MyPersonValueProperty = DependencyProperty.Register( 「MyPersonValue」, typeof運算(MyPerson) typeof運算(MyPersonControl) 新FrameworkPropertyMetadata(NULL, FrameworkPropertyMetadataOptions.AffectsRender, 新PropertyChangedCallback(OnUriChanged) ) );和MyPerson ThePerson {{{(MyPerson)GetValue(MyPersonValueProperty); } set {SetValue(MyPersonValueProperty,value);} } }是我所需要的。 – ausgeorge 2013-03-25 02:06:54

+0

僅鏈接答案的問題...您的鏈接已死 – Jonesopolis 2015-07-09 17:52:02

+0

@Jonesy - 更新了一些示例並更新了鏈接。謝謝。 – 2015-07-09 19:29:08