我可以将某种样式的验证结果应用到一个按钮吗?

Can I apply a certain style for results from validation to only one button?

我正在开发一个 WPF 应用程序,我在其中混合使用 IDataErrorInfo 和验证规则进行验证。 为了在运行时显示验证结果,我在 window 的 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>

我有两个问题:

  1. 该样式禁用 window 上的所有按钮。我该怎么做才能仅禁用保存按钮? 我尝试了以下方法,但似乎存在语法错误(VS 不接受):

    <Style TargetType="{x:Name btn_save}">
    
  2. 在保存按钮的样式中,我必须检查每个已验证的控件。 是否有另一种可能性使该部分更短且更不容易出错(因为它必须与视图模型结合使用)?

提前致谢!

如果您希望您的样式应用于单个按钮而不是所有按钮,您需要为样式指定一个键,例如:

<Style x:Key="SaveButtonStyle" TargetType="{x:Type Button}">

这样它就不会隐式应用于所有按钮。要将其应用于您的保存按钮,请在按钮上明确指定样式:

<Button Style="{StaticResource SaveButtonStyle}">