我得到了一个我创建的自定义DependencyObjects的集合。但我认为DependencyObject的来源无关紧要。 问题是我希望列表的属性,但是当我查看DependencyObject的C#doc时,我找不到与属性相关的任何内容......:/
我该怎么做?
(nb:我在我的DependencyObject中将字段(string,int,etcetc ..)作为属性,我也得到了DependencyProperties。最后我想列出DependencyProperties,但这不是义务!)
提前thx并为我的语言sry,im french -_- (也为我的总统吵架......)
答案 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
标记。