2017-10-10 5 views
0

Property = "Validation.ErrorTemplate"を使用してWPFラベルの検証を試みています。問題は、標準の検証トリガーでさえないということです。私の目的は、テキストの前景を赤に変更することです。WPF + Catelを使用したラベルのトリガー検証

<Label Content="{Binding LabelConformidadValidadion, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True}"></Label> 

私はCATEL 4.5.2を使用しており、私は次のコードで検証を設定しました。

protected override void ValidateFields(List<IFieldValidationResult> validationResults) 
     { 
      if (Peso!=null && !Peso.Peso_Caliente.HasValue) 
       validationResults.Add(FieldValidationResult.CreateErrorWithTag(Peso_CalienteProperty,"No se ha capturado el peso", "Captura_PesoCalienteCanExecute")); 
      if (Peso!=null && !Peso.IC.HasValue) 
       validationResults.Add(FieldValidationResult.CreateErrorWithTag(LabelConformidadValidadion, "No se ha capturado el indicador IC", "Captura_PesoCalienteCanExecute")); 
     } 

viewmodelは検証されますが、ラベルを囲む標準の赤いボックスは表示されません。私が見つけた1つのことは、デバッグして、ラベルのNotifyOnValidationError = Trueプロパティをオンまたはオフにすると、ラベルに通常の赤いボックスが表示されることです。

+0

あなたにも真= ValidatesOnDataErrorsを設定してみてくださいましたか? –

+0

私は両方の設定をしました。そして、それぞれ単独で設定します。 –

答えて

1

問題は、私はルールをPropertyDataではなくフィールドに付けることでした。

完全回答は

XAMLです。

<Label Content="{Binding LabelConformidadValidadion, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True}"> 
            <Label.Style> 
             <Style TargetType="Label"> 
              <Style.Triggers> 
               <Trigger Property="Validation.HasError" Value="true"> 
                <Setter Property="Foreground" Value="Red"></Setter> 
               </Trigger> 
              </Style.Triggers> 
             </Style> 
            </Label.Style> 
           </Label> 

のC#:

public string LabelConformidadValidadion 
     { 
      get { return GetValue<string>(LabelConformidadValidadionProperty); } 
      set { SetValue(LabelConformidadValidadionProperty,value); } 
     } 

     public static readonly PropertyData LabelConformidadValidadionProperty = RegisterProperty("LabelConformidadValidadion", typeof(string), null); 

...

protected override void ValidateFields(List<IFieldValidationResult> validationResults) 
     { 
      if (Peso!=null && !Peso.Peso_Caliente.HasValue) 
       validationResults.Add(FieldValidationResult.CreateErrorWithTag(Peso_CalienteProperty,"No se ha capturado el peso", "Captura_PesoCalienteCanExecute")); 
      if (Peso!=null && !Peso.IC.HasValue) 
       validationResults.Add(FieldValidationResult.CreateError(LabelConformidadValidadionProperty, "No se ha capturado el indicador IC")); 
     } 
関連する問題