3

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

换句话说,如果您有:

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 的实例,以便我可以设置位于该类型上的另一个属性的值。

4

1 回答 1

2

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

本质上,您将需要在某个时候自己实例化该实例,然后OnMyPropertyChanged可能通过某种静态状态在您的 .

我不确切知道您要实现什么,但作为替代方案,您可以在DependencyObjectd”中设置其他附加属性OnMyPropertyChanged。因此,如果您想保留某种状态,则可以将其放在另一个附加属性中。

在这一点上,我突然想到,这MyAttachedPropertyClass可能是一种使用附加属性(如Gridor )的控制DockPanel。在这种情况下,MyAttachedPropertyClass可能是DependencyObjectd”的父级,您可以使用VisualTreeHelper类访问它。

在这一点上,我只是在黑暗中寻找答案。如果您有更多关于您正在尝试做的事情的详细信息,我可能会为您提供进一步的帮助。

于 2010-12-16T14:19:23.160 回答