2017-10-10 4 views
0

Property = "Validation.ErrorTemplate"을 통해 WPF 레이블의 유효성을 검사하려고합니다. 문제는 표준 유효성 검사조차도 트리거하지 않는다는 것입니다. 내 목적은 텍스트의 전경을 빨간색으로 변경하는 것입니다.WPF + Catel을 사용하여 레이블에서 트리거 유효성 검사

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

칼 CAT 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의 유효성은 검사되지만 레이블 주위의 표준 빨간색 상자는 표시되지 않습니다. 내가 발견 한 한 가지는 디버깅을하고 레이블의 NotifyOnValidationError = True 속성을 켜고 끄는 경우 레이블에 일반적인 빨간색 상자가 표시된다는 것입니다.

+0

당신이 ValidatesOnDataErrors을 설정하려고 했나 = 사실뿐만 아니라? –

+0

나는 둘 다 설정했다. 그리고 나서 각자 혼자서 설정하십시오. –

답변

1

문제는 제가 PropertyData가 아니라 필드에 규칙을 첨부하는 것이 었습니다.

전체 답변은 this

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