gpt4 book ai didi

c# - 如何成功实现WPF文本框验证?

转载 作者:行者123 更新时间:2023-11-30 14:27:56 25 4
gpt4 key购买 nike

我正在尝试为 WPF 应用程序实现简单的文本框验证,但我遇到了一些问题。

我使用了这个指南:http://www.codeproject.com/Tips/690130/Simple-Validation-in-WPF

我在 MainWindow.xaml 中的文本框:

     <TextBox x:Name="textbox1" HorizontalAlignment="Left" Height="23" 
Margin="93,111,0,0" TextWrapping="Wrap" VerticalAlignment="Top"
Width="120" Style="{StaticResource textBoxInError}"
Validation.ErrorTemplate="{StaticResource validationErrorTemplate}">
<TextBox.Text>
<Binding Path="Name" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:NameValidator/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>

我在 MainWindow.xaml.cs 中的 NameValidator 类:

    public class NameValidator : ValidationRule 
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
if (value == null)
return new ValidationResult(false, "value cannot be empty.");
else
{
if (value.ToString().Length > 3)
return new ValidationResult(false, "Name cannot be more than 3 characters long.");
}
return ValidationResult.ValidResult;
}
}

我在 App.xaml 中的静态资源:

        <ControlTemplate x:Key="validationErrorTemplate">
<DockPanel>
<TextBlock Foreground="Red" DockPanel.Dock="Top">!</TextBlock>
<AdornedElementPlaceholder x:Name="ErrorAdorner"></AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>

我可以毫无错误地运行应用程序,但从未触发验证。

最佳答案

使用您发布的内容,对我来说效果很好,它会产生红色“!”在文本框上方。但是,我确实记得设置我的 DataContext,即。

public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}

没有这个,它就不会工作。

关于c# - 如何成功实现WPF文本框验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30762646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com