我正在尝试做一些我之前认为很容易的事情:在另一个控件的验证规则中使用一个控件的值.我的应用程序具有用户可以输入的各种参数,这里讨论的特定参数定义范围的起点和终点,用户通过文本框设置值.
有问题的两个控件是开始和结束文本框,并且应在验证中检查以下条件:
我已经完成的前两个条件.第三个实现起来要困难得多,因为我无法从验证器访问结束文本框的值.即使我可以,有五个不同的范围(每个都有自己的开始和结束文本框)我正在尝试验证,并且必须有一些解决方案比为每个范围创建验证规则更优雅.
这是相关的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)