WPF依赖对象

时间:2016-02-08 17:27:06

标签: wpf

有没有人听说过实现IDependencyObject而不是从它继承 - 这样就可以实际创建一个类层次结构,而不必在尝试同时获取我们的类上的依赖项对象/属性和自定义行为时只使用接口。 / p>

我希望有一个类种的层次结构,它们可以在现有结构的上下文中直接使用,即Polygon。我希望能够在任何地方使用我的PolyType,并且如果我将PolyGon现有类型作为我的DependencyObject的一部分放置,则不需要任何对话和间接。但我也希望能够将我的类作为a){Binding}标记扩展的目标,b)PolyType的Animate属性和c)将主题样式应用于PolyType。

我想实现IDependencyObject而不是被迫直接从它继承,并阻碍我成为PolyGon的直接后代和可用的能力。

1 个答案:

答案 0 :(得分:0)

不确定为什么必须从DependencyObject继承。我使用自定义代码片段生成以下代码来注册依赖属性:

public partial class UserControl1 : UserControl
{
public static DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(Polygon), typeof(UserControl1), new FrameworkPropertyMetadata(new PropertyChangedCallback(MyProperty_Changed)));

public Polygon MyProperty
{
    get { return (Polygon)GetValue(MyPropertyProperty); }
    set { SetValue(MyPropertyProperty, value); }
}


private static void MyProperty_Changed(DependencyObject o, DependencyPropertyChangedEventArgs args)
{
    UserControl1 thisClass = (UserControl1)o;
    thisClass.SetMyProperty();
}

private void SetMyProperty()
{
    //Put Instance MyProperty Property Changed code here
}


public UserControl1()
{
    InitializeComponent();
}

}

如您所见,DependencyObject可以是任何类型的对象。如果这不是您所需要的,请发布代码示例,或更好地解释您的情况。