Подтвердить что ты не робот

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

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

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

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

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

Код из 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;
      }
    }
4b9b3361

Ответ 1

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

Ответ 2

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