2012-11-20 51 views
0

我有一个具有透明背景和厚白色边框的按钮。当按钮检测到鼠标进入时,我看到背景从已设置的透明背景变为默认的聚焦颜色,因此我只是将不透明度设置为0.2,以便它显示一些反馈,表明它具有焦点。在WPF中设置按钮的选定颜色和焦点

现在这里是我的困境。当我离开按钮的边界时,会有一个小动画从我的.2不透明度变为1,然后将背景更改为原始透明。我想知道如何用平滑的动画替换它,以便在它变为透明之前不会看到不透明的背景,或者只是有一种方法可以完全绕过动画,并让它设置我的值。当按钮被关注时,我发现类似的事情发生了。它将使用默认背景色在0.2不透明度和1.0之间进行动画处理。任何想法将不胜感激。

<Button BorderBrush="White" BorderThickness="1" Width="45" Height="45" > 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Opacity" Value="0.2" /> 
       </Trigger> 
       <Trigger Property="IsMouseOver" Value="False"> 
        <Setter Property="Background" Value="Transparent" /> 
        <Setter Property="Opacity" Value="1.0" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

回答

3

这里是一个XAML唯一的解决办法,我想这你想要做什么......

<Button BorderBrush="White" BorderThickness="1" Width="45" Height="45" Content="1234" > 
     <Button.Style> 
      <Style TargetType="{x:Type Button}"> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="False"> 
         <Setter Property="Background" Value="Transparent" /> 
         <Setter Property="Opacity" Value="1.0" /> 
        </Trigger> 
        <EventTrigger RoutedEvent="MouseLeave"> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.2" To="1"></DoubleAnimation> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
        <EventTrigger RoutedEvent="MouseEnter"> 
         <BeginStoryboard> 
          <Storyboard> 
           <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.2" To="0.2"></DoubleAnimation> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
       </Style.Triggers> 
      </Style> 
     </Button.Style> 
    </Button> 
+0

这可以创造奇迹。我只需要弄清楚如果按钮被选中的话。其他方面它只是脉冲。 – Seb