【问题标题】:How to set some type of highlight to a button when it's default button or when it's mouse over button?当按钮是默认按钮或鼠标悬停在按钮上时,如何为按钮设置某种类型的突出显示?
【发布时间】:2017-03-29 12:23:30
【问题描述】:

这是一个我设计的按钮,但我意识到使用该应用程序的人无法注意到按钮何时悬停/选中或类似的东西? 我只想在选择按钮时收到某种通知或其他什么? 任何类型的解决方案对我来说都是可以接受的,所以如果按钮被鼠标悬停,或者如果选择按钮来通知用户 就是那个按钮!

这是我当前的按钮:

 <Button x:Name="btnOk"
                    SnapsToDevicePixels="True"
                    UseLayoutRounding="True"
                    IsDefault="True"
                    Grid.Row="2"
                    Grid.Column="1"
                    FontSize="15"
                    Width="140"
                    BorderThickness="1"
                    HorizontalContentAlignment="Center"
                    VerticalContentAlignment="Center"
                    Foreground="#0091EA"
                    Background="White"
                    Content="Ok!"
                    BorderBrush="#0091EA" Margin="5,10,0,10" HorizontalAlignment="Left" Click="btnPotvrdi_Click">
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="BlueViolet"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
            <Button.Template>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border BorderThickness="{TemplateBinding BorderThickness}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                Background="{TemplateBinding Background}">
                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                    VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                    </Border>
                </ControlTemplate>

            </Button.Template>

        </Button>

【问题讨论】:

标签: c# wpf button styles


【解决方案1】:

Style 中指定默认背景(White),您的触发器将按预期工作:

<Button x:Name="btnOk"
                    SnapsToDevicePixels="True"
                    UseLayoutRounding="True"
                    IsDefault="True"
                    Grid.Row="2"
                    Grid.Column="1"
                    FontSize="15"
                    Width="140"
                    BorderThickness="1"
                    HorizontalContentAlignment="Center"
                    VerticalContentAlignment="Center"
                    Foreground="#0091EA"
                    Content="Ok!"
                    BorderBrush="#0091EA" Margin="5,10,0,10" HorizontalAlignment="Left" Click="btnPotvrdi_Click">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Background" Value="White" />
            <Style.Triggers>
                <Trigger Property="IsFocused" Value="True">
                    <Setter Property="Background" Value="Green"/>
                </Trigger>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="BlueViolet"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
    <Button.Template>
        <ControlTemplate TargetType="{x:Type Button}">
            <Border BorderThickness="{TemplateBinding BorderThickness}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                Background="{TemplateBinding Background}">
                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                    VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
            </Border>
        </ControlTemplate>
    </Button.Template>
</Button>

“本地”值优先于由SetterStyle 中设置的值:https://msdn.microsoft.com/en-us/library/ms743230(v=vs.110).aspx

【讨论】:

  • 事实上我的例子很好,但我有问题因为我没有在我的 Button.Style 中放置背景属性,所以按钮一直是白色的,我看不到变化
  • 顺便说一句,在打开带有按钮的窗口时,我如何在第一次输入单击时只选择按钮而不触发触发器,所以实际上用户应该按两次 Enter 以触发 btnOk
  • 请不要在 cmets 字段中提出其他问题。如果您有其他问题,请提出新问题。
  • 我尝试在我的 comp 上更改日期时间,但有人把这个网站做得很好:/ xD
猜你喜欢
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
相关资源
最近更新 更多