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

问题描述:

从属性更改回调中获取附属属性的实例是否有附属属性类型?从依赖项属性更改回调中获取附加属性实例

换句话说,如果您有:

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的实例,这样我可以设置另一个属性坐在类型的值。

+0

不知道我明白你想做什么。你能再详细一点吗? – 2010-12-16 14:16:08

+0

我在MyAttachedPropertyClass上有一个基于实例的字段,我需要将OnMyPropertyChanged中该字段的值设置为e.NewValue的整数值。由于OnMyPropertyChanged是静态的,我无法在静态上下文中访问此实例字段。 – devdigital 2010-12-16 14:19:47

+1

我不确定我是否理解了你的问题,或者你想要做什么,但是如果你只需要属性发生变化的对象实例(我最好猜测你到底是什么意思),那就是你的' DependencyObject d'参数。 – 2010-12-16 22:43:22

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

本质上,你需要自己在某个时刻实例化实例,然后通过你的OnMyPropertyChanged访问实例,可能通过某种静态。

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

在我看来,在这一点上,MyAttachedPropertyClass可能是一种使用诸如GridDockPanel等附属属性的控件。在这种情况下,MyAttachedPropertyClass可能是DependencyObjectd”的父代,您可以使用VisualTreeHelper类访问它。

在这一点上,我只是在黑暗中拍摄答案。如果您有关于您想要做什么的更多详细信息,我可能会为您提供更多帮助。