Wpf 作为DependencyProperty的自定义对象

Wpf 作为DependencyProperty的自定义对象,wpf,user-controls,inotifypropertychanged,Wpf,User Controls,Inotifypropertychanged,我有一个定制课,我的人。所有(相关)属性实现INotifyPropertyChanged。 我创建了一个UserControl来显示它,一切都很好。绑定到MyPerson.FirstName(一个字符串)等属性的所有工作—它们按预期显示和更新(双向绑定) 现在我想在codebehind中做更复杂的事情,所以我想创建一个PropertyType为MyPerson的DependencyProperty,但我不确定如何构造DependencyProperty,特别是PropertyChangedCal

我有一个定制课,我的人。所有(相关)属性实现INotifyPropertyChanged。 我创建了一个UserControl来显示它,一切都很好。绑定到MyPerson.FirstName(一个字符串)等属性的所有工作—它们按预期显示和更新(双向绑定)

现在我想在codebehind中做更复杂的事情,所以我想创建一个PropertyType为MyPerson的DependencyProperty,但我不确定如何构造DependencyProperty,特别是PropertyChangedCallback部分

这能做到吗?怎么会这样

阅读这篇文章-

差不多-

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
}

MSDN文档说明了这一点。如果您向下滚动到“向属性系统注册属性”部分,它将显示一个正在注册的自定义DP,类型为“水族馆对象”,其回调已更改为“OnUriChanged”,谢谢!public static readonly dependencProperty MyPersonValueProperty=dependencProperty.Register(“MyPersonValue”、typeof(MyPerson)、typeof(MyPersonControl)、new FrameworkPropertyMetadata(null,FrameworkPropertyMetadata Options.AffectsRender、new PropertyChangedCallback(onRichChanged) ) ); 和public MyPerson person{get{return(MyPerson)GetValue(MyPersonValueProperty);}set{SetValue(MyPersonValueProperty,value);}}}是我所需要的全部。链接的问题只解决了…您的链接是dead@Jonesy-更新了一些示例并更新了链接。谢谢