有没有人听说过实现IDependencyObject而不是从它继承 - 这样就可以实际创建一个类层次结构,而不必在尝试同时获取我们的类上的依赖项对象/属性和自定义行为时只使用接口。 / p>
我希望有一个类种的层次结构,它们可以在现有结构的上下文中直接使用,即Polygon。我希望能够在任何地方使用我的PolyType,并且如果我将PolyGon现有类型作为我的DependencyObject的一部分放置,则不需要任何对话和间接。但我也希望能够将我的类作为a){Binding}标记扩展的目标,b)PolyType的Animate属性和c)将主题样式应用于PolyType。
我想实现IDependencyObject而不是被迫直接从它继承,并阻碍我成为PolyGon的直接后代和可用的能力。
答案 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可以是任何类型的对象。如果这不是您所需要的,请发布代码示例,或更好地解释您的情况。