【问题标题】:wpf button after click behavior点击行为后的wpf按钮
【发布时间】:2015-09-06 15:10:41
【问题描述】:

我在做一个wpf程序,我做了一个自定义样式按钮:

<Style x:Key="ButtonMio" TargetType="{x:Type Button}">
        <Setter Property="Padding" Value="1"/>
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="Foreground" Value="Transparent"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Name="border" Background="{TemplateBinding Background}">
                        <ContentPresenter Name="content" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                  Margin="{TemplateBinding Padding}"
                                  RecognizesAccessKey="True"
                                  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">

                            <Setter Property="Background" Value="#FF3EC8C6" />
                            <Setter Property="Foreground" Value="Transparent"/>
                        </Trigger>
                        <Trigger Property="IsPressed" Value="True">

                            <Setter Property="Background" Value="Transparent" />
                            <Setter Property="Foreground" Value="Transparent"/>
                            <Setter Property="BorderBrush" Value="Transparent"/>
                        </Trigger>
                        <Trigger Property="IsFocused" Value="True">

                            <Setter Property="Background" Value="Transparent" />
                            <Setter Property="Foreground" Value="Transparent"/>
                            <Setter Property="BorderBrush" Value="Transparent"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

嗯,按钮有一个图像作为内容(所以它比真正的按钮小)。由于背景是透明的,我在鼠标悬停触发器中写了这个:

<Setter Property="Background" Value="#FF3EC8C6" />

而且它有效。但仅在点击之前。 Afterclick没有更多的背景。即使单击其他按钮并使第一个按钮失去焦点(我认为),背景仍然不会出现。 我厌倦了更改“IsPressed”和“IsFocused”,但在第一种情况下,背景不会在单击后消失,而在第二种情况下,我没有使用 tab 来聚焦元素。

真的对不起我的英语。希望一切都清楚。谢谢!

【问题讨论】:

    标签: c# css wpf xaml button


    【解决方案1】:

    触发器的声明顺序是个问题。

     <ControlTemplate.Triggers>
          <Trigger Property="IsMouseOver" Value="True">
             <Setter Property="Background" Value="#FF3EC8C6" />    
          </Trigger>
          <Trigger Property="IsPressed" Value="True">
             <Setter Property="Background" Value="Transparent" />        
          </Trigger>
          <Trigger Property="IsFocused" Value="True">
             <Setter Property="Background" Value="Transparent" />
          </Trigger>
     </ControlTemplate.Triggers>
    

    IsMouseOver 在 IsFocused 启动并让背景透明之后立即发生。

    试试这样:

          <ControlTemplate.Triggers>
         <Trigger Property="IsFocused" Value="True">
             <Setter Property="Background" Value="#FF3EC8C6" />                    </Trigger>
          <Trigger Property="IsPressed" Value="True">
             <Setter Property="Background" Value="Transparent" />        
          </Trigger>
          <Trigger Property="IsMouseOver" Value="True">
             <Setter Property="Background" Value="Transparent" />
          </Trigger>
     </ControlTemplate.Triggers>       
    

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多