0

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

该控件包含并封装了另一个控件。

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

有什么建议么?

4

2 回答 2

2

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

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

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

于 2009-09-03T13:57:04.840 回答
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();
}
于 2009-09-03T14:16:15.123 回答