2016-09-06 61 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}" />