3 c# validation wpf xaml visual-studio-2012
我正在尝试为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>
Run Code Online (Sandbox Code Playgroud)
我在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;
}
}
Run Code Online (Sandbox Code Playgroud)
我在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>
Run Code Online (Sandbox Code Playgroud)
我可以毫无错误地运行应用程序,但永远不会触发验证.
使用你发布的内容,它对我来说很好,它会产生红色的"!" 在文本框上方.但是,我DID记得设置我的DataContext,即.
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)
没有它,它将无法工作.
| 归档时间: |
|
| 查看次数: |
6741 次 |
| 最近记录: |