WPF样式未按预期工作
本文关键字:工作 样式 WPF | 更新日期: 2023-09-27 18:21:49
我将以下样式应用于按钮(默认启用):
<Style x:Key="DisableFoxProCancelButton"
TargetType="{x:Type Button}"
BasedOn="{StaticResource ButtonStyle}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=FoxProTableIsDirty}" Value="false">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
当FoxProTableIsDirty为False时,此操作可禁用该按钮。
我最初将其连接如下(默认禁用):
<Style x:Key="DisableFoxProCancelButton"
TargetType="{x:Type Button}"
BasedOn="{StaticResource ButtonStyle}">
<Setter Property="IsEnabled" Value="False" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=FoxProTableIsDirty}" Value="true">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
但当FoxProTableIsDirty为False时,第二种方法无法禁用该按钮。
当我编写样式时,第二种样式似乎更有意义,因为默认情况下,在对关联表进行更改并需要保存更改之前,应该禁用按钮。
有人能解释一下为什么第二个不起作用吗?
编辑
以下是使用此样式的按钮的代码:
<Button Name="CancelFoxproChanges"
Content="Cancel"
Style="{StaticResource DisableFoxProCancelButton}"
DockPanel.Dock="Right"
HorizontalAlignment="Right">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:CallMethodAction TargetObject="{Binding}"
MethodName="FoxProCancelButtonClicked" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
检查Button
元素中是否设置了IsEnabled
。
remove(如果设置为触发器)不能覆盖本地或内联值。
<Button Style="{StaticResource DisableFoxProCancelButton}"IsEnabled="False">
通过其他方式,您可以直接将FoxProTableIsDirty绑定到Button的IsEnabled,例如
<Button IsEnabled="{Binding FoxProTableIsDirty}" />
或通过样式设置器
<Setter Property="IsEnabled" Value="{Binding FoxProTableIsDirty}" />
只要FoxProTableIsDirty
正在被解决并通知更改,这将根据需要启用/禁用按钮