0

我在我的 WPF 应用程序的登录页面上工作,我希望登录键盘按钮的背景图像更改为两种不同的状态,而不是按下(默认)显示在图像背景(keypad_button.png)中,按下时(IsPressed)(keypad_button_pressed。 .png)。我试图做到这一点,当我按下它(IsPressed Trigger)时,我成功地改变了背景按钮,但问题出在默认背景图像中?

如何使按钮的默认背景图像出现,然后当我按下按钮时它会变为另一个背景图像?

这是我的风格:

            <Setter Property="FocusVisualStyle" Value="{x:Null}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Name="border" 
                    BorderThickness="{TemplateBinding BorderThickness}"
                    Padding="{TemplateBinding Padding}" 
                    BorderBrush="{TemplateBinding BorderBrush}" 
                    CornerRadius="1"
                    Background="{TemplateBinding Background}">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsPressed" Value="True">
                            <Setter Property="Background">
                                <Setter.Value>
                                    <ImageBrush ImageSource="/RestaurantPOS;component/images/buttons/keypad_button_pressed.png"/>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Opacity" Value="0.25" />
                            <Setter Property="BorderBrush" Value="Transparent" />
                        </Trigger>                         
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

这是我的键盘按钮:(仅适用于 7 号按钮的样式)

在此处输入图像描述

    <Button x:Name="txb7" Click="txb7_Click" Content="7" HorizontalAlignment="Left" Margin="181,117,0,0" VerticalAlignment="Top" Width="72" Height="57" Style="{StaticResource ImageButton}" FontWeight="Bold" FontSize="18"></Button>

正如你所展示的,7号按钮默认背景不会出现(蓝色),但是当我按下它时(keypad_button_pressed.png)就可以了。我该如何解决这个问题。

我不想使用 ToggleButton。

4

1 回答 1

1

您可以再编写一个触发器来检查是否IsPressed为假,并且在此触发器中您可以设置默认图像。

<ControlTemplate TargetType="Button">
    <Border Name="border" 
    BorderThickness="{TemplateBinding BorderThickness}"
    Padding="{TemplateBinding Padding}" 
    BorderBrush="{TemplateBinding BorderBrush}" 
    CornerRadius="1"
    Background="{TemplateBinding Background}">
        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsPressed" Value="True">
            <Setter Property="Background">
                <Setter.Value>
                    <ImageBrush ImageSource="/RestaurantPOS;component/images/buttons/keypad_button_pressed.png"/>
                </Setter.Value>
            </Setter>
        </Trigger>
        <Trigger Property="IsPressed" Value="False">
            <Setter Property="Background">
                <Setter.Value>
                    <ImageBrush ImageSource="/RestaurantPOS;component/images/buttons/keypad_button.png"/>
                </Setter.Value>
            </Setter>
        </Trigger>
        <Trigger Property="IsEnabled" Value="false">
            <Setter Property="Opacity" Value="0.25" />
            <Setter Property="BorderBrush" Value="Transparent" />
        </Trigger>                         
    </ControlTemplate.Triggers>
</ControlTemplate>
于 2013-08-17T11:47:30.967 回答