Использование IDataErrorInfo для связанных, но не взаимоисключающих флажков - PullRequest
1 голос
/ 26 августа 2010

У меня есть серия флажков на форме. Один или несколько должны быть проверены, и если нет, я хочу отображать значок ошибки на них, пока один из них не будет.

Моя реализация IDataErrorInfo выглядит так:

public string this[string columnName]
{
    get
    {
        switch (columnName)
        {
            case "option1":
            case "option2":
            case "option3":
                if (!this.option1 && !this.option2 && !this.option3)
                    return "Please select one or more of the 3 options";
        }
    }
}

Теперь, если ни один из флажков, связанных с параметрами 1-3, не отмечен, каждый флажок будет иметь значок ошибки, что хорошо, но если один из них установлен, то только этот флажок будет иметь ошибку Значок удален (в отличие от всех).

Каков идеальный способ проведения повторной проверки формы для вариантов 1-3 при изменении любого из них?

Если это помогает (хотя я не думаю, что оно должно сильно отличаться от обычных элементов управления winforms), я использую элементы управления пользовательского интерфейса DevExpress, поэтому флажки - CheckBoxEdit, а ErrorProvider - DxErrorProvider.

РЕДАКТИРОВАТЬ: РЕШЕНО

В итоге я вручную уведомил об изменении свойства для других параметров при его изменении.

private bool option1;
public bool Option1
{
    get { return this.option1; }
    set
    {
        this.option1 = value;

        this.notifyPropertyChanged("Option1");
        this.notifyPropertyChanged("Option2");
        this.notifyPropertyChanged("Option3");
    }
}

// repeat for options2-3
...