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>

WPF样式未按预期工作

检查Button元素中是否设置了IsEnabled

remove(如果设置为触发器)不能覆盖本地或内联值。

<Button Style="{StaticResource DisableFoxProCancelButton}"IsEnabled="False">


通过其他方式,您可以直接将FoxProTableIsDirty绑定到Button的IsEnabled,例如

<Button IsEnabled="{Binding FoxProTableIsDirty}" />

或通过样式设置器

<Setter Property="IsEnabled" Value="{Binding FoxProTableIsDirty}" />

只要FoxProTableIsDirty正在被解决并通知更改,这将根据需要启用/禁用按钮