c# - 获取附加属性 "Canvas.Left"

标签 c# attached-properties getproperty

我有以下代码:

this.Object.GetType().GetProperty(this.PropertyName).GetValue(this.Object, null);

PropertyName是一个字符串,包含我想要获取的属性的名称。这适用于“普通”属性,但我无法获取“Canvas.LeftProperty”或“Canvas.TopProperty”。

谁能帮帮我吗?

谢谢, 克里斯

最佳答案

我认为这是因为 Canvas.Left 是附加属性,要检索它们,请尝试以下操作:

private DependencyProperty GetAttachedProperty(DependencyObject obj, string propertyName, Type ownerType)
{

    foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(obj,
        new Attribute[] { new PropertyFilterAttribute(PropertyFilterOptions.All) }))
    {
        DependencyPropertyDescriptor dpd =
            DependencyPropertyDescriptor.FromProperty(pd);

        if (dpd != null && dpd.IsAttached)
        {
            if (string.Compare(dpd.DependencyProperty.Name, propertyName, StringComparison.CurrentCultureIgnoreCase) == 0 && dpd.DependencyProperty.OwnerType == ownerType)
            {
                return dpd.DependencyProperty;
            }
        }
    }

    return null;
}

Source

关于c# - 获取附加属性 "Canvas.Left",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11535952/

相关文章:

java - System.getProperty ("user.home") 在 Tomcat 上返回 "/usr/share/tomcat7/"

c# - WCF netNamedPipeBinding 和共享内存用于它们的通信

c# - 在引用中找不到 System.Drawing.dll

wpf - 使用 MVVM 将焦点设置到 WPF 中的控件

wpf - 附加属性在 WPF 中究竟是如何工作的?

C# GetValue of PropertyInfo 与子类

java - 与 System.getProperty 不一致 ("user.dir")

c# - 如何设置属性网格的选定项

c# - 获取 ASP.NET 开发服务器端口号

wpf - 类型列表的附加属性