1

私はいくつかの WPF プロジェクトを実行しましたが、同じ問題がポップアップ表示されます。これは、依存関係プロパティ (dp) の集約/結合の「問題」です。

たとえば、bool 型の 10 個の dp を結合して、分離した dp として公開したいと考えています。組み合わせた dp は、その構成要素の 1 つ以上が false でない限り、true です。

私は現在、10 個の (!() dp のそれぞれに対してコールバックを登録する addValueChanged を使用してこれを行っていますが、より洗練されたソリューションや、この一般的なシナリオに対処するフレームワークがあるかどうか疑問に思っています。reactiveUI と mvvm light はまだ使用していません。しかし、私はそれがここで役立つと考えています。

        var dpd = DependencyPropertyDescriptor.FromProperty(property,
                                                            owner.GetType());
        dpd.AddValueChanged(owner,
                            handler);
4

3 に答える 3

5

ReactiveUI では次のようになります。

// etc all the way to ten
this.WhenAny(x => x.PropOne, x => PropTwo, x => x.PropThree, 
    (one,two,three) => one && two && three)
    .Subscribe(x => FinalProp = x);
于 2013-01-08T05:23:49.910 に答える
0

それがよりエレガントかどうかはわかりませんが、各dep prop(1 ... 10)にはセッターがあります。

それぞれの内部Setで呼び出すことができます(Caliburn Micro構文を使用)

OnPropertyChanged(() => depPropN);      // where N = 1 ..... 10
OnPropertyChanged(() => combinedDepProp);
于 2013-01-07T13:25:15.620 に答える
0

DependencyProperties は、通常のプロパティに基づいて機能します。

ルートの通常の bool プロパティの 1 つが設定されるたびに、「結合された」bool プロパティに対しても OnPropertyChanged を発生させることができます。

結合されたブール プロパティのゲッターは、ルートのブール プロパティを評価する必要があります。

于 2013-01-07T13:18:20.320 に答える