无法通过Reflection获取WPF附加属性

时间:2013-05-20 08:24:26

标签: c# .net wpf attached-properties

我在共享库中有自定义附加属性:

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运行良好且没有任何问题。我做错了什么,为什么我不能得到我的附属财产!?

1 个答案:

答案 0 :(得分:1)

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