Установка значения связанного свойства из установщика другого связанного свойства - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть бизнес-объект в 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, но это, похоже, не имело значения. Это ожидаемое поведение в этом сценарии? Если так, возможно ли реализовать описанное мной поведение?

1 Ответ

1 голос
/ 15 сентября 2011

Может потребоваться установить для привязки DataSourceUpdateMode значение DataSourceUpdateMode.OnPropertyChanged

...