我正在开发一个WPF应用程序,我在其中使用IDataErrorInfo和验证规则进行验证。 为了在运行时显示验证结果,我在窗口的XAML中创建了一些样式。 只要存在输入错误,其中一种样式应禁用保存按钮:
<Window.Resources>
<!--Disabling the Save-button by style not viewmodel-property-->
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=tbx_firstname, Path=(Validation.HasError)}" Value="true">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=tbx_lastname, Path=(Validation.HasError)}" Value="true">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=tbx_age, Path=(Validation.HasError)}" Value="true">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
我有两个问题:
该样式禁用窗口上的所有按钮。如何才能禁用保存按钮? 我尝试了以下内容,但似乎存在语法错误(VS不接受它):
<Style TargetType="{x:Name btn_save}">
在保存按钮的样式中,我必须检查每个经过验证的控件。 是否有另一种可能性使该部分更短并且更不容易出错(因为它必须与视图模型结合)?
提前致谢!
答案 0 :(得分:1)
如果您希望将样式应用于单个按钮而不是所有样式,则需要为样式指定一个键,例如:
<Style x:Key="SaveButtonStyle" TargetType="{x:Type Button}">
这样它就不会隐式应用于所有按钮。要将其应用于保存按钮,请在按钮上明确指定样式:
<Button Style="{StaticResource SaveButtonStyle}">