自定义对象作为DependencyProperty

4
我有一个自定义类MyPerson,其中所有(相关)属性都实现了INotifyPropertyChanged接口。我创建了一个UserControl来显示它,并且一切都运行良好。像MyPerson.FirstName(一个字符串)这样的属性绑定都能正常工作 - 它们按预期显示和更新(双向绑定)。
现在我想在代码后台做更复杂的事情,所以我想创建一个PropertyType为MyPerson的DependencyProperty,但我不确定如何构建DependencyProperty,特别是PropertyChangedCallback部分。
这可以完成吗?怎么做?

1
MSDN文档本身就显示了这一点。http://msdn.microsoft.com/en-gb/library/ms753358.aspx 如果您向下滚动到“使用属性系统注册属性”部分,它将显示一个自定义DP被注册为类型为“AquariumObject”,并且具有更改的回调函数“OnUriChanged”。 - Viv
1个回答

1

请阅读本文 - 自定义依赖属性

类似于 -

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
}

非常感谢!以下是翻译的文本内容: public static readonly DependencyProperty MyPersonValueProperty = DependencyProperty.Register( "MyPersonValue", typeof(MyPerson), typeof(MyPersonControl), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender, new PropertyChangedCallback(OnUriChanged) ) ); 和 public MyPerson ThePerson { get { return (MyPerson)GetValue(MyPersonValueProperty); } set { SetValue(MyPersonValueProperty, value); } } 就是我需要的全部。 - ausgeorge
仅提供链接的答案存在问题...您提供的链接已失效。 - Jonesopolis
@Jonesy - 已更新一些示例并更新了链接。谢谢。 - Rohit Vats

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接