2

作成したカスタム DependencyObjects のコレクションを取得しました。しかし、DependencyObject がどこから来るかは問題ではないと思います。問題は、そのプロパティのリストが欲しいということですが、DependencyObject の C#doc を見ていると、プロパティに関連するものが見つかりません... :/

どうすればできますか?

(nb : フィールド (文字列、int など) を DependencyObject のプロパティとして取得し、DependencyProperties も取得しました。最終的には DependencyProperties のみをリストしたいのですが、義務ではありません!)

事前に Thx と私の言語を心配してください、私はフランス人です -_- (そして、私の大統領も心配しています...)

4

1 に答える 1

3

DependencyProperties は (通常は?) type の public static フィールドに格納されるため、リフレクションを使用してこれを行うことができます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 のみが必要な場合は、フラグoを削除します。FlattenHierarchy

于 2011-09-27T14:17:19.880 に答える