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
    }
    }
    }

  • 相关阅读:
    Android 4.0新增Space及GridLayout初谈
    phpweb文件上传下载
    文件上传下载
    php大文件上传
    word图片上传到服务器
    文件中心支持上传下载
    文件管理系统开源
    ueditor word图片上传
    web超大文件上传
    java大视频上传实现
  • 原文地址:https://www.cnblogs.com/sjqq/p/6626071.html
Copyright © 2011-2022 走看看