我将以下样式应用于Button(默认情况下启用):
<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>
答案 0 :(得分:1)
检查IsEnabled
元素中是否设置了Button
。
,则删除触发器无法覆盖本地或内联值。
&lt; Button Style =“{StaticResource DisableFoxProCancelButton}” IsEnabled =“False” /&gt;
以其他方式你可以直接将FoxProTableIsDirty绑定到Button的IsEnabled,例如
<Button IsEnabled="{Binding FoxProTableIsDirty}" />
或通过样式设定者
<Setter Property="IsEnabled" Value="{Binding FoxProTableIsDirty}" />
只要FoxProTableIsDirty
正在解决并通知更改,这将根据需要启用/禁用按钮