0

次のようなクラス Cell があります。

public Color color{get { return colorr; }
set { colorr = value;
        if (this.PropertyChanged != null){
            this.PropertyChanged(this, new PropertyChangedEventArgs("color"));
        }
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;

キューブを生成するために、viewport3D に多くの「セル」を追加しています。そして、細胞の色は時間の経過とともに変化します。私の質問は、セルが変更されるたびにセルを再描画する代わりに、コードでセルの色をソリッドブラシにバインドできますか?

私はこのようなものを持っていますが、うまくいきません。

Binding b = new Binding();
        b.Source = cell.color;

        SolidColorBrush solidBrush = new SolidColorBrush();
        BindingOperations.SetBinding(solidBrush, SolidColorBrush.ColorProperty, b);

        Material material = new DiffuseMaterial(solidBrush);

セルの色が変わると solidBrush の色が変わるため、viewport3D の立方体の色が変わると思います。しかし、そうではありません。

ありがとう - デビッド

4

1 に答える 1

1

データ バインディングの概要バインディングのデバッグ方法をお読みください。

の変更に対する拘束力のある更新はありSourceません。更新が必要な場合はPath、ソースに関連する を設定する必要があります。例えば

b.Source = cell;
b.Path = new PropertyPath("color");

これは、バインディングがINPCソース (およびパス上の非リーフ) でサブスクライブし、イベントによって報告された名前がパスと一致するかどうかを確認し、一致する場合はターゲットが更新されるためです。

于 2011-12-09T23:11:10.577 に答える