.net 文本框的WPF验证,绑定应该是什么样子?
我正在尝试验证WPF中的文本框。我在网上找到了一些例子,我把一些东西放在一起。但现在它只是验证了一切,就好像它是错的一样。我被告知这是我的绑定,因为我不确定该绑定什么,我来这里是为了澄清:) 这是我的验证器:.net 文本框的WPF验证,绑定应该是什么样子?,.net,wpf,validation,xaml,textbox,.net,Wpf,Validation,Xaml,Textbox,我正在尝试验证WPF中的文本框。我在网上找到了一些例子,我把一些东西放在一起。但现在它只是验证了一切,就好像它是错的一样。我被告知这是我的绑定,因为我不确定该绑定什么,我来这里是为了澄清:) 这是我的验证器: class TextRangeValidator:ValidationRule { 私有整数_最小长度=0; 私有int_最大长度=0; 私有字符串错误消息; 公共整数最小长度 { 获取{return\u minimumLength;} 设置{u minimumLength=value;}
class TextRangeValidator:ValidationRule
{
私有整数_最小长度=0;
私有int_最大长度=0;
私有字符串错误消息;
公共整数最小长度
{
获取{return\u minimumLength;}
设置{u minimumLength=value;}
}
公共整数最大长度
{
获取{return\u maximumLength;}
设置{u maximumLength=value;}
}
公共字符串错误消息
{
获取{return\u errorMessage;}
设置{u errorMessage=value;}
}
公共覆盖验证结果验证(对象值,
文化资讯(文化资讯)
{
ValidationResult=新的ValidationResult(true,null);
string inputString=(string)value.ToString();
if(inputString.Lengththis.MaximumLength)
{
结果=新的ValidationResult(false,this.ErrorMessage);
}
返回结果;
}
}
以下是我的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>
现在我的binding属性名为name,我试图将它绑定到CreateUserCpTextBox.Text,但它不起作用。这是如何工作的?您必须将其绑定到源和路径,例如以下简单对象:
public class Class1
{
public string Name { get; set; }
}
可以通过将对象添加到窗口及其资源集合来创建该对象。
源绑定到对象及其属性[Name]的路径,在本例中该属性为“0123456789”
最后,必须通过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>
接下来,您可以使用已验证的文本框播放一些内容。我还尝试在xaml.cs文件中创建一个属性,并将文本框绑定到它。这也没有帮助。所以我必须创建一个新的c#类,只是为了拥有一个Textbox可以绑定到的属性所以我可以为我想要验证的所有属性创建一个类?你刚刚让我很开心,我已经为此烦恼了这么久。现在我只是想知道。为什么我不能不创建路径Textbox.text?这不也是一个属性吗?通常,您希望将textbox.text绑定到可以验证的对象,而不是绑定到它本身。这毫无意义。输入必须在应用程序逻辑中的某个地方。当然,您可以将其设置为任何(数据)源。
<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>