从依赖项属性更改回调中获取附加属性实例

时间:2010-12-16 13:49:54

标签: c# .net wpf attached-properties

无论如何从附加属性类型的属性更改回调中获取附加属性的实例?

换句话说,如果你有:

public class MyAttachedPropertyClass
{
      public static readonly DependencyProperty MyProperty = DependencyProperty.RegisterAttached(
        "My", typeof(int), typeof(MyAttachedPropertyClass), new FrameworkPropertyMetadata(0, OnMyPropertyChanged));

 private static void OnMyPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
      //TODO: access instance of MyAttachedPropertyClass
    }
}

我需要访问MyAttachedPropertyClass的实例,以便我可以设置另一个属性的值。

1 个答案:

答案 0 :(得分:2)

通常,根据我的经验,附加属性所拥有的类型是静态的。当不是静态时,在设置附加属性时,不会实例化拥有类型的实例。如果这就是你真正想要的,你将不得不做更多的工作。

基本上,您需要自己在某个时刻实例化实例,然后在OnMyPropertyChanged中访问它,可能是通过某种静态状态。

我不确切地知道您要实现的目标,但作为替代方案,您可以在DependencyObject dOnMyPropertyChanged”中设置其他附加属性。所以,如果你想要保留某种状态,你可以把它放在另一个附属物中。

此时,我发现MyAttachedPropertyClass可能是使用GridDockPanel等附加属性的排序的控件。在这种情况下,MyAttachedPropertyClass可能是DependencyObjectd”的父级,您可以使用VisualTreeHelper类访问它。

此时,我只是在黑暗中拍摄答案。如果您有关于您正在尝试做什么的更多详细信息,我可以帮助您。