Getting the attached property “Canvas.Left”

浪尽此生 提交于 2019-12-02 09:39:41

问题


I have the following code:

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

PropertyName is a string, containing the name of the property I want to get. This works fine for "normal" properties, but I can't get the "Canvas.LeftProperty" or "Canvas.TopProperty".

Can anyone help me out?

Thanks, Chris


回答1:


I think this is because Canvas.Left is attached property and to retrieve them try this:

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



来源:https://stackoverflow.com/questions/11535952/getting-the-attached-property-canvas-left

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!