Принудительная проверка IDataErrorInfo

У меня на панели есть два элемента управления: текстовое поле и поле со списком:

<TextBox Text="{Binding ShapeName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />

<ComboBox SelectedItem="{Binding ActiveStageViewModel, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />

Мне нужно форсировать проверку idataerrorinfo для текстового поля, когда я выбираю что-то в выпадающем списке. Как это сделать?

Код из viewmodel:

string IDataErrorInfo.this[string propertyName]
    {
      get
      {
        var error = string.Empty;

        if (propertyName == Expression.GetPropertyName(() => ActiveStageViewModel))
        {
          // TODO: Add functionality to force ShapeName property validation
          return error;
        }

        if (propertyName == Expression.GetPropertyName(() => ShapeName))
        {
          error = ValidateShapeName();
        }

        TooltipMessage = error;
        return error;
      }
    }

2 ответа

Решение

Просто поднять NotifyPropertyChanged событие для свойства, которое вы хотите проверить, или если вы находитесь в.NET 4.5 или Silverlight 4, используйте INotityDataErrorInfo.

Также стоит помнить, что вы можете вызвать NotifyPropertyChanged с помощью свойства String.Empty. Это приведет к проверке всех свойств на этом уровне. Может быть полезным в разы.

Другие вопросы по тегам