2013-05-20 95 views
0

得到WPF附加属性我已经定制的附加属性:无法通过反射

public class Freezable 
{ 
    public static bool GetIsFrozen(DependencyObject obj) 
    { 
     return (bool)obj.GetValue(IsFrozenProperty); 
    } 

    public static void SetIsFrozen(DependencyObject obj, bool value) 
    { 
     obj.SetValue(IsFrozenProperty, value); 
    } 

    public static readonly DependencyProperty IsFrozenProperty = 
     DependencyProperty.RegisterAttached("IsFrozen", typeof(bool), typeof(UIElement), new UIPropertyMetadata(false)); 
} 

此属性,代码和值测试存储成功。

Freezable.SetIsFrozen(control, value); 
var correctValue =Freezable.GetIsFrozen(control); 

但是,然后我试图通过反射得到我的财产。我有一个异常,无法找到属性(getMethod为null,setMethod为null)!

public void FindAttachedProperty(Type elementType, string propertyName) 
    { 
     MethodInfo getMethod = elementType.GetMethod("Get" + propertyName, BindingFlags.Public | BindingFlags.Static); 
     MethodInfo setMethod = elementType.GetMethod("Set" + propertyName, BindingFlags.Public | BindingFlags.Static); 
    } 

Canvas.Left,Canvas.Right working well and without any problems。我做错了什么,为什么我不能得到我的附属财产!?

回答

1

你的代码适合我。我最好的猜测是,当您调用FindAttachedProperty方法时,您将System.Windows.Freezable指定为elementType,而不是您自己从库中的实现。