我在类中具有以下依赖项属性:
class FooHolder
{
public static DependencyProperty CurrentFooProperty = DependencyProperty.Register(
"CurrentFoo",
typeof(Foo),
typeof(FooHandler),
new PropertyMetadata(OnCurrentFooChanged));
private static void OnCurrentFooChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
FooHolder holder = (FooHolder) d.Property.Owner; // <- something like this
// do stuff with holder
}
}
我需要能够检索对更改后的属性所属的类实例的引用。
这是因为
FooHolder
具有一些事件处理程序,这些事件处理程序在属性值更改时需要被挂接/取消挂接。更改的属性回调必须是静态的,但事件处理程序不是。 最佳答案
这样的事情:(您必须自己定义UnwireFoo()和WireFoo())
private static void OnCurrentFooChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
FooHolder holder = (FooHolder)d; // <- something like this
holder.UnwireFoo(e.OldValue as Foo);
holder.WireFoo(e.NewValue as Foo);
}
而且,当然,FooHolder必须从DependencyObject继承