力IDataErrorInfo的验证(Force IDataErrorInfo validation

2019-08-02 18:07发布

我有一些面板两个控件:文本框和组合框:

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

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

我需要强制IDataErrorInfo的验证的文本框,当我选择的组合框的东西。 怎么做?

从视图模型的代码:

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;
      }
    }

Answer 1:

只是提高NotifyPropertyChanged事件要验证的属性或者如果你是在.NET 4.5或Silverlight 4使用INotityDataErrorInfo 。



Answer 2:

值得记住的也可以提高NotifyPropertyChanged用的String.Empty财产。 这将迫使所有属性的验证在这一水平。 有时可能是有用的。



文章来源: Force IDataErrorInfo validation