我可以将某种样式的验证结果应用到一个按钮吗?
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>
我有两个问题:
该样式禁用 window 上的所有按钮。我该怎么做才能仅禁用保存按钮?
我尝试了以下方法,但似乎存在语法错误(VS 不接受):
<Style TargetType="{x:Name btn_save}">
在保存按钮的样式中,我必须检查每个已验证的控件。
是否有另一种可能性使该部分更短且更不容易出错(因为它必须与视图模型结合使用)?
提前致谢!
如果您希望您的样式应用于单个按钮而不是所有按钮,您需要为样式指定一个键,例如:
<Style x:Key="SaveButtonStyle" TargetType="{x:Type Button}">
这样它就不会隐式应用于所有按钮。要将其应用于您的保存按钮,请在按钮上明确指定样式:
<Button Style="{StaticResource SaveButtonStyle}">
我正在开发一个 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>
我有两个问题:
该样式禁用 window 上的所有按钮。我该怎么做才能仅禁用保存按钮? 我尝试了以下方法,但似乎存在语法错误(VS 不接受):
<Style TargetType="{x:Name btn_save}">
在保存按钮的样式中,我必须检查每个已验证的控件。 是否有另一种可能性使该部分更短且更不容易出错(因为它必须与视图模型结合使用)?
提前致谢!
如果您希望您的样式应用于单个按钮而不是所有按钮,您需要为样式指定一个键,例如:
<Style x:Key="SaveButtonStyle" TargetType="{x:Type Button}">
这样它就不会隐式应用于所有按钮。要将其应用于您的保存按钮,请在按钮上明确指定样式:
<Button Style="{StaticResource SaveButtonStyle}">