C# 在WPF中显示错误消息文本框
当我的文本框为空/null时,我需要显示Required 在我的xaml中:C# 在WPF中显示错误消息文本框,c#,wpf,C#,Wpf,当我的文本框为空/null时,我需要显示Required 在我的xaml中: <TextBox Name="txtLastName" Grid.Column="1" Grid.Row="1" Margin="3"> <TextBox.Text> <Binding Path="LastName"> <Binding.ValidationRules>
<TextBox Name="txtLastName" Grid.Column="1" Grid.Row="1" Margin="3">
<TextBox.Text>
<Binding Path="LastName">
<Binding.ValidationRules>
<validators:Contractor
MinimumLength="1"
MaximumLength="40"
ErrorMessage="Required" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
在我的班上:
public string LastName
{
get { return _lastName; }
set
{
_lastName = value;
NotifyPropertyChanged("LastName");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private int _minimumLength = -1;
private int _maximumLength = -1;
private string _errorMessage;
public int MinimumLength
{
get { return _minimumLength; }
set { _minimumLength = value; }
}
public int MaximumLength
{
get { return _maximumLength; }
set { _maximumLength = value; }
}
public string ErrorMessage
{
get { return _errorMessage; }
set { _errorMessage = value; }
}
public override ValidationResult Validate(object value,CultureInfo cultureInfo)
{
ValidationResult result = new ValidationResult(true, null);
string inputString = (value ?? string.Empty).ToString();
if (inputString.Length < this.MinimumLength || value==null ||
(this.MaximumLength > 0 &&
inputString.Length > this.MaximumLength))
{
result = new ValidationResult(false, this.ErrorMessage);
}
return result;
}
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
我得到的是,当数据为null/空且我无法看到所需的错误消息时,文本框变为红色边框,有什么想法吗?当附加属性Validation.HasError为true时,红色边框是文本框的默认行为。 为了显示错误消息,您必须自己绑定到Validation.Errors . Validation.Errors是应用于文本框的每个验证器的错误列表。 现在,您只有一个验证器,因此为了获得错误消息,您需要绑定到Validation.Errors[0]。ErrorContent 范例
<StackPanel Orientation="Horizontal">
<TextBox Name="txtLastName" Width="100">
<TextBox.Text>
<Binding Path="LastName">
<Binding.ValidationRules>
<validators:Contractor
MinimumLength="1"
MaximumLength="40"
ErrorMessage="Required" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<!-- Show error message tot the right of the TextBox-->
<TextBlock Text="{Binding (Validation.Errors)[0].ErrorContent, ElementName=txtLastName}"/>
</StackPanel>
谢谢,但还是没有留言,有什么遗漏吗?感谢您的帮助。调试时,我可以根据需要查看错误内容,但它不会显示在文本框的右侧,只在文本框上显示红色边框。谢谢。抱歉,我忘了在验证周围加括号。错误,因为它是附加属性。我已经更新了上面的xaml。