【问题标题】:Eliminating "highlight" on button click- XAML消除按钮单击时的“突出显示”-XAML
【发布时间】:2013-12-18 21:42:03
【问题描述】:

我在自定义颜色的界面上有几个按钮。当我将鼠标悬停在它们上面时,它们会染上微软在 Windows 中使用的那种蓝色。它看起来很棒,只是不是我的颜色组合(黑色和金色)。

如何消除点击行为的突出显示?我需要为我的所有按钮执行此操作,这些按钮继承自基本样式:

<Style x:Key="ContentControlElementsStyle" TargetType="ContentControl">
            <Setter Property="FontFamily" Value="Segoe UI"/>
            <Setter Property="Background" Value="Black"/>
            <Setter Property="Foreground" Value="#F1B82D"/>
            <Setter Property="BorderBrush" Value="#F1B82D"/>
</Style>

【问题讨论】:

    标签: wpf xaml button


    【解决方案1】:

    使用以下按钮样式。

     <Style TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ButtonBase}"  >
                        <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                            <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <!--<Trigger Property="Button.IsDefaulted" Value="True">
                                <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
                            </Trigger>-->
                            <!--<Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" TargetName="border" Value="#FFBEE6FD"/>
                                <Setter Property="BorderBrush" TargetName="border" Value="#FF3C7FB1"/>
                            </Trigger>-->
                            <!--<Trigger Property="IsPressed" Value="True">
                                <Setter Property="Background" TargetName="border" Value="#FFC4E5F6"/>
                                <Setter Property="BorderBrush" TargetName="border" Value="#FF2C628B"/>
                            </Trigger>-->
                            <Trigger Property="ToggleButton.IsChecked" Value="True">
                                <Setter Property="Background" TargetName="border" Value="#FFBCDDEE"/>
                                <Setter Property="BorderBrush" TargetName="border" Value="#FF245A83"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/>
                                <Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/>
                                <Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="#FF838383"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    

    我评论了导致鼠标悬停和按下状态颜色变化的触发器。

    【讨论】:

      【解决方案2】:

      类似的东西:

          <Style.Triggers>
              <Trigger Property="Button.IsPressed" Value="True">
                  <Setter Property="Content">
                      <Setter.Value>
                          <Image Source="MyAwesomeClickedPicture.png" Height="32" Width="32" />
                      </Setter.Value>
                  </Setter>
              </Trigger>
              <Trigger Property="Button.IsMouseOver" Value="True">
                  <Setter Property="Content">
                      <Setter.Value>
                          <Image Source="MyAwesomePicture.png" Height="32" Width="32" />
                      </Setter.Value>
                  </Setter>
              </Trigger>
          </Style.Triggers>
      

      但在你的情况下,我猜你想设置颜色而不是像我那样设置图像

      【讨论】:

      • 我认为你正在做某事......虽然我没有摆脱突出显示。我想这是设置属性的一种方式。知道它可能是什么吗?
      • 你想摆脱鼠标悬停的突出显示吗?还是点击时?
      • 我想消除鼠标悬停时的突出显示,并在单击时反转颜色。抱歉,如果我之前没有说清楚:P
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 2015-02-24
      • 2013-05-24
      相关资源
      最近更新 更多