Если вы сделали это «правильно», событие PropertyChanged
вызовет обновление привязок, которые привязываются к этому свойству, при этом любые конвертеры, которые используются в той же привязке , будут преобразовывать ценности. Поэтому обычно преобразования происходят самостоятельно. Если это не тот случай, когда вы, вероятно, используете конвертеры «ненадлежащим образом», пожалуйста, опубликуйте некоторый код, потому что без него совершенно невозможно сказать, что именно вы делаете неправильно.
Редактировать: Вы используете grid.SetValue(Grid.BackgroundProperty, bin)
, вместо этого следует использовать grid.SetBinding(Grid.BackgroundProperty, bin)
, поскольку это привязка.
Edit2: Это действительно не имеет никакого отношения к конвертерам.
В вашем примере кода вы привязываетесь к IntValue
, затем изменяете TodayColor
и ожидаете обновления привязки, не произойдет . Если вы хотите, чтобы привязка реагировала на оба свойства, вы должны либо использовать MultiBinding
, либо вызвать соответствующие события, поскольку ваши свойства взаимозависимы.
1021 * т.е. *
private Color _TodayColor;
public short _IntValue;
public short IntValue
{
get { return _IntValue; }
set
{
if (_IntValue != value)
{
_IntValue = value;
OnPropertyChanged("IntValue");
OnPropertyChanged("TodayColor");
}
}
}
public Color TodayColor
{
get { return _TodayColor; }
set
{
if (_TodayColor != value)
{
_TodayColor = value;
OnPropertyChanged("TodayColor");
OnPropertyChanged("IntValue");
}
}
}