2

我得到了我创建的自定义 DependencyObjects 的集合。但我认为 DependencyObject 来自何处并不重要。问题是我想要列出它的属性,但是当我查看 DependencyObject 的 C#doc 时,我找不到与属性相关的任何内容......:/

我该怎么做 ?

(注意:我在 DependencyObject 中获得了字段(字符串、int 等)作为属性,并且我也获得了 DependencyProperties。最终我只想列出 DependencyProperties,但这不是义务!)

提前谢谢我的语言,我是法语 -_- (也为我的总统道歉......)

4

1 回答 1

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,包括在父类中定义的那些。如果您只想在s 类中直接定义 DependencyProperties,请删除该标志。oFlattenHierarchy

于 2011-09-27T14:17:19.880 回答