Цвет привязки к Solidbrush.color в коде c # - PullRequest
0 голосов
/ 10 декабря 2011

У меня есть класс 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 будет меняться при изменении цвета ячейки, и, следовательно, цвет куба в области просмотра3D. Но это не так.

Спасибо - Дэвид

1 Ответ

1 голос
/ 10 декабря 2011

Прочтите обзор привязок данных и , как отлаживать привязки .

Не существует обязательных обновлений для изменений Source, если вы хотите обновления, вам нужно установить Path относительно источника. например,

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

Это связано с тем, что привязка подпишется на INPC на источнике (и не оставляет на пути) и проверяет, соответствует ли имя, сообщаемое событием, пути, если это так, цель является обновлен.

...