小编Tri*_*chu的帖子

验证规则使用来自另一个控件的值

我正在尝试做一些我之前认为很容易的事情:在另一个控件的验证规则中使用一个控件的值.我的应用程序具有用户可以输入的各种参数,这里讨论的特定参数定义范围的起点和终点,用户通过文本框设置值.

有问题的两个控件是开始和结束文本框,并且应在验证中检查以下条件:

  1. 起始值必须大于或等于某个任意值
  2. 结束值必须小于或等于某个任意值
  3. 起始值必须小于或等于结束值

我已经完成的前两个条件.第三个实现起来要困难得多,因为我无法从验证器访问结束文本框的值.即使我可以,有五个不同的范围(每个都有自己的开始和结束文本框)我正在尝试验证,并且必须有一些解决方案比为每个范围创建验证规则更优雅.

这是相关的XAML代码:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:validators="clr-namespace:CustomValidators"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <TextBox Name="textboxStart" Grid.Row="0">
        <TextBox.Text>
            <Binding Path="Start" UpdateSourceTrigger="PropertyChanged">
                <Binding.ValidationRules>
                    <validators:MeasurementRangeRule Min="1513" Max="1583"/>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>

    <TextBox Name="textboxEnd" Grid.Row="1">
        <TextBox.Text>
            <Binding Path="End" UpdateSourceTrigger="PropertyChanged">
                <Binding.ValidationRules>
                    <validators:MeasurementRangeRule Min="1513" Max="1583"/>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
</Grid>
Run Code Online (Sandbox Code Playgroud)

这是相关的C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; …
Run Code Online (Sandbox Code Playgroud)

c# validation wpf

11
推荐指数
1
解决办法
1798
查看次数

标签 统计

c# ×1

validation ×1

wpf ×1