我在类中具有以下依赖项属性:

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继承

10-06 07:35