У меня есть следующее свойство зависимости в классе:
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
Владелец изменяемого свойства - параметр d
вашего метода обратного вызова