列出DependencyObject的属性?

时间:2011-09-27 14:09:38

标签: c# dependencyobject

我得到了一个我创建的自定义DependencyObjects的集合。但我认为DependencyObject的来源无关紧要。 问题是我希望列表的属性,但是当我查看DependencyObject的C#doc时,我找不到与属性相关的任何内容......:/

我该怎么做?

(nb:我在我的DependencyObject中将字段(string,int,etcetc ..)作为属性,我也得到了DependencyProperties。最后我想列出DependencyProperties,但这不是义务!)

提前thx并为我的语言sry,im french -_- (也为我的总统吵架......)

1 个答案:

答案 0 :(得分:3)

您可以使用反射来执行此操作,因为DependencyProperties(通常是?)存储在DependencyProperty类型的公共静态字段中:

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);
}

它使用FlattenHierarchy返回所有DependencyProperties,包括在父类中定义的那些。如果您只想在o类中定义直接,请删除FlattenHierarchy标记。