我正在尝试验证WPF中的文本框。我在互联网上找到了一些例子,我把一些东西放在一起。但是现在它只是验证了一切,好像它是错的。我被告知这是我的约束力,因为我不确定该怎么约束我来这里澄清一下:)
这是我的验证器:
class TextRangeValidator : ValidationRule
{
private int _minimumLength = 0;
private int _maximumLength = 0;
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 = (string)value.ToString();
if (inputString.Length < this.MinimumLength ||
(
inputString.Length > this.MaximumLength))
{
result = new ValidationResult(false, this.ErrorMessage);
}
return result;
}
}
这是我的xaml代码:
<TextBox Height="23" HorizontalAlignment="Left" Margin="118,60,0,0" Name="CreateUserCPRTextbox" VerticalAlignment="Top" Width="120" >
<TextBox.Text >
<Binding Path="Name" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="true">
<Binding.ValidationRules >
<validators:TextRangeValidator
ValidatesOnTargetUpdated="True"
MinimumLength="10"
MaximumLength="10"
ErrorMessage="CPR nummer ikke gyldigt" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
现在我的绑定属性只是名为name,我试图将它绑定到CreateUserCPRTextbox.Text但它不起作用。这是如何工作的?
答案 0 :(得分:4)
您必须将其绑定到源和路径,例如以下简单对象:
public class Class1
{
public string Name { get; set; }
}
可以通过将对象添加到其资源集合的窗口来创建对象。 源绑定到对象及其属性[Name]的路径,在此示例中为“0123456789”。
<Window.Resources>
<validators:Class1 x:Key="class1" Name="0123456789" />
</Window.Resources>
最后,您必须通过Source = {StaticResource class1}将其源代码绑定到此资源
<Grid>
<TextBox Height="23" HorizontalAlignment="Left" Margin="118,60,0,0" Name="CreateUserCPRTextbox" VerticalAlignment="Top" Width="120" >
<TextBox.Text >
<Binding Source="{StaticResource class1}" Path="Name" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="true">
<Binding.ValidationRules >
<validators:TextRangeValidator ValidatesOnTargetUpdated="True" MinimumLength="10" MaximumLength="10" ErrorMessage="CPR nummer ikke gyldigt" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</Grid>
接下来,您可以使用经过验证的文本框进行播放。