强制IDataErrorInfo验证

Wit*_*her 15 validation wpf idataerrorinfo

我在某个面板上有两个控件:textbox和combobox:

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

<ComboBox SelectedItem="{Binding ActiveStageViewModel, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
Run Code Online (Sandbox Code Playgroud)

当我在组合框上选择一些东西时,我需要强制对文本框进行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;
      }
    }
Run Code Online (Sandbox Code Playgroud)

bit*_*onk 22

只需NotifyPropertyChanged为要验证的属性引发事件,或者如果您使用的是.NET 4.5或Silverlight 4,请使用INotityDataErrorInfo.


Pau*_*ues 14

值得记住的是,您可以使用String.Empty属性引发NotifyPropertyChanged.这将强制验证该级别的所有属性.有时可能有用.