我如何使用带有设置器和触发器的自定义样式?
How can i use a custom style with setters and triggers?
我想做这样的事情,但显然我不能指定 2 个样式属性。我无法弄清楚将样式资源添加到“<Button.Style>
”属性的语法。
<Button x:Name="CreateProductButton" Style="{StaticResource GoldButton}" Content="Add Product" Click="CreateProductButton_Click" TabIndex="4">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="false" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=OperatorId, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=NewProductId, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=NewYearId, Path=(Validation.HasError)}" Value="false" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="true" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
如果您尝试使用现有样式并添加或更改一些内容,请使用 Style.BasedOn
。即:
<Style x:Key="MyDerivedButtonStyle"
TargetType="{x:Type Button}"
BasedOn="{StaticResource GoldButton}">
<Setter Property="IsEnabled" Value="false" />
<Style.Triggers>
...
</Style.Triggers>
</Style>
然后将 Button 的样式设置为 Style={StaticResource MyDerivedButtonStyle}
。
我想做这样的事情,但显然我不能指定 2 个样式属性。我无法弄清楚将样式资源添加到“<Button.Style>
”属性的语法。
<Button x:Name="CreateProductButton" Style="{StaticResource GoldButton}" Content="Add Product" Click="CreateProductButton_Click" TabIndex="4">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="false" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=OperatorId, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=NewProductId, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=NewYearId, Path=(Validation.HasError)}" Value="false" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="true" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
如果您尝试使用现有样式并添加或更改一些内容,请使用 Style.BasedOn
。即:
<Style x:Key="MyDerivedButtonStyle"
TargetType="{x:Type Button}"
BasedOn="{StaticResource GoldButton}">
<Setter Property="IsEnabled" Value="false" />
<Style.Triggers>
...
</Style.Triggers>
</Style>
然后将 Button 的样式设置为 Style={StaticResource MyDerivedButtonStyle}
。