【问题标题】:WPF Button Status?WPF按钮状态?
【发布时间】:2013-08-17 11:31:44
【问题描述】:

我在我的 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。

【问题讨论】:

    标签: wpf button styles


    【解决方案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-11-23
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 2012-05-05
      相关资源
      最近更新 更多