依赖属性正确用法

时间:2009-09-03 12:20:01

标签: wpf wpf-controls dependency-properties

我有一个正在开发的wpf控件。

此控件包含并封装另一个控件。

我想将内部控件的属性暴露给使用该控件的窗口。 我还希望内部控件在此属性更改时执行逻辑。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

内部和外部控件都应该定义依赖项属性。外部控件的模板应该包含内部控件,并且应该将属性绑定在一起:

<local:InnerControl SomePropertyOnInnerControl="{TemplateBinding SomePropertyOnOuterControl}"/>

这可以确保您的控件可以独立使用并且彼此分离。可以根据它们在该控件中的用途来命名属性。例如,内部控件可以将其称为Text,而外部控件将其用于更具体的目的,如CustomerName

答案 1 :(得分:0)

依赖项属性更新通过属性元数据处理,属性元数据被定义为DependencyProperty的一部分。 (它也可以添加到现有的DP中,但这是另一个主题。)

使用元数据定义DependencyProperty:

public static readonly DependencyProperty MyValueProperty =
    DependencyProperty.Register("MyValue", typeof(object), typeof(MyControl), 
    new UIPropertyMetadata(null, new PropertyChangedCallback(MyValue_PropertyChanged)));

然后实现你的回调:

private static void MyValue_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    MyControl c = (MyControl)d;
    c.DoSomething();
}