C# 使用WPF+;在标签上触发验证;卡特尔
我试图通过Property=“validation.ErrorTemplate”在WPF标签上设置验证样式。问题是,即使是标准验证也不会触发。我的目标是将文本的前景改为红色C# 使用WPF+;在标签上触发验证;卡特尔,c#,wpf,validation,catel,C#,Wpf,Validation,Catel,我试图通过Property=“validation.ErrorTemplate”在WPF标签上设置验证样式。问题是,即使是标准验证也不会触发。我的目标是将文本的前景改为红色 <Label Content="{Binding LabelConformidadValidadion, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True}"></Label> 我使用Catel4.5.2,并使用以
<Label Content="{Binding LabelConformidadValidadion, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True}"></Label>
我使用Catel4.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"));
}
受保护的覆盖无效验证字段(列出验证结果)
{
如果(比索!=空&!比索.比索校准值)
validationResults.Add(FieldValidationResult.CreateErrorWithTag(Peso_-CalienteProperty,“无其他capturado el-Peso”,“Captura_-PesoCalienteCanExecute”);
如果(比索!=null&&!Peso.IC.HasValue)
validationResults.Add(FieldValidationResult.CreateErrorWithTag(LabelConformidadValidation,“无capturado el INDICADO IC”、“Captura_PesoCalienteCanExecute”);
}
viewmodel已验证,但标签周围的标准红色框从未出现。我发现的一件事是,如果我正在调试并打开和关闭标签上的NotifyOnValidationError=True属性,标签会显示通常的红色框。问题是我将规则附加到字段,而不是属性数据 完整的答案是这样的 XAML
C#:
公共字符串标签ConformidadValidation
{
获取{返回GetValue(LabelConformidadValidationProperty);}
set{SetValue(LabelConformidadValidationProperty,value);}
}
公共静态只读属性Data LabelConformidadValidationProperty=RegisterProperty(“LabelConformidadValidation”,类型为(字符串),null);
受保护的覆盖无效验证字段(列出验证结果)
{
如果(比索!=空&!比索.比索校准值)
validationResults.Add(FieldValidationResult.CreateErrorWithTag(Peso_-CalienteProperty,“无其他capturado el-Peso”,“Captura_-PesoCalienteCanExecute”);
如果(比索!=null&&!Peso.IC.HasValue)
添加(FieldValidationResult.CreateError(LabelConformidadValidationProperty,“无se ha capturado el Indicator IC”);
}
您是否也尝试过将validateSondaerRors=true设置为true?我尝试过,将两者都设置为启用状态。然后单独设置每一个。
<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>
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"));
}