2011-09-27 82 views
2

我收到了我創建的自定義DependencyObjects的集合。但是我認爲無論DependencyObject來自哪裏,都無關緊要。 事情是,我想列表它的屬性,但是當我在爲DependencyObject查找C#文檔時,我找不到與屬性有關的任何東西...:/列出DependencyObject的屬性?

我該怎麼做?

(注:!我字段(字符串,整數,etcetc。)在我的DependencyObject的屬性,和我DependencyProperties太Ultimatly我想只列出DependencyProperties但它不是一種義務)

THX提前和SRY我langage,即時通訊法國-_- (SRY和爲我的總統......)

+0

它好,我們也很抱歉我們的總統。 –

回答

3

爲此,您可以使用反射,因爲DependencyProperties是(通常?)存儲在公共靜態

private static IEnumerable<DependencyProperty> GetDependencyProperties(DependencyObject o) 
{ 
    return from field in o.GetType().GetFields(BindingFlags.Public | 
               BindingFlags.FlattenHierarchy | 
               BindingFlags.Static) 
      where field.FieldType == typeof(DependencyProperty) 
      select (DependencyProperty)field.GetValue(null); 
} 
DependencyProperty類型的字段

它使用FlattenHierarchy來返回所有的DependencyProperties,包括在父類中定義的那些。如果你只想要DependencyProperties直接在o的類定義,取出FlattenHierarchy標誌。