zoukankan      html  css  js  c++  java
  • WPF-Binding对数据的检验

    设置Binding的ValidationRules属性对Binding进行检验

    <StackPanel>
    <TextBox x:Name="txtAge" FontSize="30" Foreground="Red"></TextBox>
    <TextBlock x:Name="errorSummary" FontSize="30" Foreground="Red"></TextBlock>
    </StackPanel>

    后台代码

    public partial class MainWindow : Window
    {
    public MainWindow()
    {
    InitializeComponent();
    Person p = new Person { Age = 20, Name = "Tom" };
    Binding binding = new Binding("Age") { Source = p };
    binding.NotifyOnValidationError = true;
    binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
    RangeValidationRule rv = new RangeValidationRule();
    binding.ValidationRules.Add(rv);
    this.txtAge.SetBinding(TextBox.TextProperty, binding);
    this.txtAge.AddHandler(Validation.ErrorEvent, new RoutedEventHandler(this.ValidationError));
    }
    void ValidationError(object sender, RoutedEventArgs e)
    {
    if (Validation.GetErrors(this.txtAge).Count > 0)
    {
    this.txtAge.ToolTip = Validation.GetErrors(this.txtAge)[0].ErrorContent.ToString();
    this.errorSummary.Text = Validation.GetErrors(this.txtAge)[0].ErrorContent.ToString();
    // You can do everything here when validation error occurs
    }
    }
    }
    }

    同样,我们在XAML里也可以设置验证

    <StackPanel>
    <TextBox x:Name="txtAge" FontSize="30" Foreground="Red" Validation.Error="txtAge_Error">
    <Binding NotifyOnValidationError="True" Path="Age" UpdateSourceTrigger="PropertyChanged">
    <Binding.ValidationRules>
    <local:RangeValidationRule></local:RangeValidationRule>
    </Binding.ValidationRules>
    </Binding>
    </TextBox>
    <TextBlock x:Name="errorSummary" FontSize="30" Foreground="Red"></TextBlock>
    </StackPanel>

    后台代码:

    public partial class MainWindow : Window
    {
    public MainWindow()
    {
    InitializeComponent();
    Person p = new Person { Age = 20, Name = "Tom" };
    this.DataContext = p;
    }
    private void txtAge_Error(object sender, ValidationErrorEventArgs e)
    {
    if (Validation.GetErrors(this.txtAge).Count > 0)
    {
    this.txtAge.ToolTip = Validation.GetErrors(this.txtAge)[0].ErrorContent.ToString();
    this.errorSummary.Text = Validation.GetErrors(this.txtAge)[0].ErrorContent.ToString();
    // You can do everything here when validation error occurs
    }
    }
    }

  • 相关阅读:
    Innodb中自增长值的列
    LINUX-vmstat命令讲解
    find命令总结
    特殊权限chattr的用法
    openstack的最简单安装
    解决新电脑的系统安装问题:针对BIOS的UEFI模式
    Linux中安装字体
    云主机和vps的区别
    install-scp
    常见typedef 用法
  • 原文地址:https://www.cnblogs.com/sjqq/p/6626071.html
Copyright © 2011-2022 走看看