如何使用组合验证它们类似数据库中不应存在PropertyNumber和OwnerNumber组合。现在我正在使用IDataErrorInfo
,但它一次只能验证一个值。
<Label DockPanel.Dock="Top" Width="Auto" Height="16"/>
<TextBox Name="PropertyNumber" DockPanel.Dock="Top" Text="{Binding
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Path=SelectedPropertyNumber,
ValidatesOnDataErrors=True}" Width="115" Height="22"
HorizontalAlignment="Left" IsEnabled="{Binding
PropertyNumbersEnabled,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" />
<Label DockPanel.Dock="Top" Width="Auto" Height="16"/>
<TextBox Name="OwnerNumber" Text="{Binding BindingGroupName=NGLDataFormGrp,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True,
Path=OwnerNumber}" DockPanel.Dock="Top" HorizontalAlignment="Left"
Width="115" Height="22" IsEnabled="{Binding
UpdateSourceTrigger=PropertyChanged,
Path=OwnerNumberEnabled, Mode=TwoWay}"/>
答案 0 :(得分:1)
您需要使用BindingGroup
。 Vincent Sibal有一篇很棒的博客文章:BindingGroups with Item-level Validation。
答案 1 :(得分:0)
我不确定这是否是最佳解决方案,但它对我有用。我通常处理这个的方法是创建一个绑定到布尔属性的DataTrigger,它指示有效或无效。
如果布尔值为false,我将边框设置为红色。如果没有,没有边框颜色。
以下是DataTrigger的一个示例:
<Style TargetType="{x:Type TextBox}">
<Setter Property="TextElement.FontFamily" Value="Calibri" />
<Setter Property="TextElement.FontSize" Value="14" />
<Setter Property="TextElement.Foreground" Value="Black" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsValid}" Value="False">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="5" Color="Red" ShadowDepth="0" />
</Setter.Value>
</Setter>
<Setter Property="ToolTip" Value="Message Field entered does not exist in Message Output tree." />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsValid}" Value="True">
<Setter Property="Effect" Value="{x:Null}" />
</DataTrigger>
</Style.Triggers>
</Style>
如果将此样式应用于绑定到同一布尔值的两个文本框,则当布尔值为false时,它们都会以亮红色边框显示。