我有一个视图,该视图绑定到具有许多属性的视图模型。一些属性直接绑定到控件,例如文本框。为此,我设置了一个验证模板,该模板显示带有带箭头的红色边框,该红色边框在工具提示中显示该属性的错误。
其他属性由响应于单击按钮而打开的表单设置。例如,我有一个标签为“单击以编辑持续时间”的按钮,该按钮弹出表格来编辑signingConfigs {
release {
v1SigningEnabled true
v2SigningEnabled true
storeFile file('/Users/Document/test.jks')
storePassword 'test123'
keyAlias 'test'
keyPassword 'test123'
}
}
和StartDate
属性。该按钮绑定到视图模型中的命令,该命令会弹出表单。
视图模型实现了EndDate
,因此对于直接绑定到属性的控件,我可以将错误消息附加到绑定到它们的属性上,并引发INotifyDataErrorInfo
事件。
我想要的是,如果未正确设置开始日期和结束日期,则将红色边框和工具提示应用于该按钮。将错误附加到ErrorsChanged
和StartDate
属性不会起作用,因为该按钮未绑定到这些属性。
答案 0 :(得分:0)
我在一个应用程序中做了同样的事情,该应用程序中还有另外一部分数据需要完成才能继续。我能够使按钮出现验证错误的方法是使用如下标记:
<Button Grid.Column="1" Grid.Row="0" Content="{DynamicResource resEnterSecureInformation}" Width="200" Command="{Binding PrimaryApplicant.SecureInformation.OpenSecureInformationWindowCommand}" Tag="{Binding PrimaryApplicant.SecureInformationComplete, ValidatesOnDataErrors=True}"></Button>
在我的app.xaml中也有一种样式,可以在设置错误时添加红色轮廓和工具提示:
<Style TargetType="Button">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)/ErrorContent}"></Setter>
<Style.Triggers>
<Trigger Property="IsVisible" Value="True">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Border BorderBrush="Red" BorderThickness="1" >
<AdornedElementPlaceholder/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<AdornedElementPlaceholder/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
我这样做是为了在禁用按钮时也不会显示验证错误(无需向用户显示他们无法修复的内容)
希望这会有所帮助