2016-09-06 68 views
2

我是UWP c#编程的初学者。所以我有一个按钮的菜单,我想改变这些风格。我更改了默认样式。但我无法更改onMouseEnter样式。我发现代码这样后,我用Google搜索:在UWP c上的mouseEnter按钮样式#

<Style x:Key="ButtonStyle" TargetType="Button"> 
     <Setter Property="BorderBrush" Value="Orange" /> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Background" Value="Red"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

但似乎Style.Triggers不UWP支持。你能帮我吗?

回答

3

但似乎Style.Triggers在UWP中不支持。

是的你是对的。在UWP中,我们需要使用内置的VisualStateManager

我不知道你是如何实现你的菜单,但如果你想改变Button的背景,当它鼠标悬停,按下或其他一些状态,你可以修改按钮的default template style。修改被命名为PointerOver这样的VisualState

<VisualState x:Name="PointerOver"> 
    <Storyboard> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="RootGrid"> 
      <DiscreteObjectKeyFrame KeyTime="0" Value="Red" /> 
     </ObjectAnimationUsingKeyFrames> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ContentPresenter"> 
      <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBorderBrushPointerOver}" /> 
     </ObjectAnimationUsingKeyFrames> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter"> 
      <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonForegroundPointerOver}" /> 
     </ObjectAnimationUsingKeyFrames> 
     <PointerUpThemeAnimation Storyboard.TargetName="RootGrid" /> 
    </Storyboard> 
</VisualState> 

那么你可以申请使用StaticResource而这种风格的,例如像这样的关键这个模板:

<Button Content="Button 1" Style="{StaticResource ButtonStyle}" />