Получение прикрепленного свойства "Canvas.Left"

У меня есть следующий код:

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

PropertyName - это строка, содержащая имя свойства, которое я хочу получить. Это нормально работает для "нормальных" свойств, но я не могу получить "Canvas.LeftProperty" или "Canvas.TopProperty".

Может кто-нибудь мне помочь?

Спасибо Крис

1 ответ

Решение

Я думаю, это потому, что 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;
}

Источник

Другие вопросы по тегам