2012-07-18 70 views
1

我有以下代碼:獲取附加屬性「Canvas.Left」

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

屬性名是一個字符串,包含我想要得到的屬性的名稱。這適用於「正常」屬性,但我無法獲得「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; 
} 

Source

+0

工作現在我,謝謝! :) – chris6523 2012-07-18 08:43:15