Miz*_*zor 11 c# dependency-properties
我在类中有以下依赖属性:
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
}
}
Run Code Online (Sandbox Code Playgroud)
我需要能够检索对更改的属性所属的类实例的引用.
这是因为FooHolder有一些事件处理程序需要在属性值更改时挂钩/取消挂钩.属性更改回调必须是静态的,但事件处理程序不是.
Cat*_*ICU 17
这样的事情:(你必须自己定义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);
}
Run Code Online (Sandbox Code Playgroud)
当然,FooHolder必须继承自DependencyObject