15

一部のパネルには、テキストボックスとコンボボックスの2つのコントロールがあります。

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

2 に答える 2

23

検証するプロパティのNotifyPropertyChangedイベントを発生させるか、.NET 4.5 または Silverlight 4 を使用している場合はINotityDataErrorInfoを使用します。

于 2012-11-14T12:33:51.747 に答える
16

String.Empty プロパティで NotifyPropertyChanged を発生させることができることも覚えておく価値があります。これにより、そのレベルのすべてのプロパティが強制的に検証されます。時に役立つことがあります。

于 2012-11-14T14:15:10.407 に答える