Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法通过反射获取WPF附加属性_C#_.net_Wpf_Attached Properties - Fatal编程技术网

C# 无法通过反射获取WPF附加属性

C# 无法通过反射获取WPF附加属性,c#,.net,wpf,attached-properties,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

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

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)


画布。左侧,画布。右侧工作正常,没有任何问题。我做错了什么,为什么我不能得到我的附属财产

你的代码对我来说很好。我的最佳猜测是,当调用
FindAttachedProperty
方法时,您将
System.Windows.Freezable
作为elementType而不是库中自己的实现

 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);
    }