Получение 'этого' указателя в свойстве зависимости изменило обратный вызов

У меня есть следующее свойство зависимости в классе:

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 имеет некоторые обработчики событий, который должен быть сцеплен/отсоединен, когда значение свойства изменяется. Свойство изменилось, обратный вызов должен быть статичным, но обработчик событий не.

11
задан Mizipzor 16 March 2010 в 09:18
поделиться

2 ответа

Примерно так: (вам нужно будет определить 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

17
ответ дан 3 December 2019 в 04:52
поделиться

Владелец изменяемого свойства - параметр d вашего метода обратного вызова

3
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: