У меня есть бизнес-объект в C #, который реализует INotifyPropertyChanged и содержит несколько связанных свойств. В двух словах это выглядит так:
public class BusinessObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
private int _intProperty;
public int IntProperty // bound to NumericUpDown control
{
get { return _intProperty; }
set
{
if (_intProperty == value)
{
return;
}
_intProperty = value;
OnPropertyChanged(new PropertyChangedEventArgs("IntProperty"));
// if IntProperty is > 10, then set BoolProperty to false
if (value > 10)
{
this.BoolProperty = false;
//OnPropertyChanged(new PropertyChangedEventArgs("BoolProperty"));
}
}
}
private bool _boolProperty;
public bool BoolProperty // bound to CheckBox
{
get { return _boolProperty; }
set
{
if (_boolProperty == value)
{
return;
}
_boolProperty = value;
OnPropertyChanged(new PropertyChangedEventArgs("BoolProperty"));
}
}
Как вы можете видеть в установщике IntProperty, я устанавливаю BoolProperty = false, когда IntProperty установлено> 10. BoolProperty привязан к CheckBox в моем пользовательском интерфейсе (winforms), но даже если я устанавливаю BoolProperty = false, CheckBox не обновляется, чтобы отразить это изменение, пока элемент управления, связанный с IntProperty, не потеряет фокус. Я подумал, что, возможно, мне нужно вызвать OnPropertyChanged после того, как я установил BoolProperty = false, но это, похоже, не имело значения. Это ожидаемое поведение в этом сценарии? Если так, возможно ли реализовать описанное мной поведение?