2010-09-09 6 views
0

Ma question est assez simple. J'essaie de styler l'arrière-plan d'un bouton dans WPF lorsque je souris/survolez le bouton.Quel est le déclencheur de style lorsque vous passez la souris sur un bouton dans WPF?

<Style x:Key="StandardButton" TargetType="Button"> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="true"> 
      <Setter Property="Background" Value="CornflowerBlue" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

Quand je mouseOver le bouton, la couleur de fond change brièvement bleu bleuet, mais change les couleurs par défaut qui montrent lorsque vous restez sur le bouton pour une preiod de temps.

Quelle propriété Trigger dois-je utiliser pour conserver l'arrière-plan du bouton CornFlowerBlue tant que je reste sur le bouton?

Merci beaucoup

+0

Juste une pensée, vous voudrez peut-être utiliser un MultiBinding pour cela et également vérifier que le bouton est activé . – Val

Répondre

1

Cette propriété par défaut de Chrome Bouton implmented dans le bouton. J'ai enlevé le chrome Bouton à partir du modèle de bouton par défaut et créer mon propre juste voir

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" 
x:Class="WpfApplication9.Window1" 
x:Name="Window" 
Title="Window1" 
Width="640" Height="480"> 
<Window.Resources> 
    <Style x:Key="ButtonFocusVisual"> 
     <Setter Property="Control.Template"> 
      <Setter.Value> 
       <ControlTemplate> 
        <Rectangle Stroke="Black" StrokeDashArray="1 2" StrokeThickness="1" Margin="2" SnapsToDevicePixels="true"/> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
    <LinearGradientBrush x:Key="ButtonNormalBackground" EndPoint="0,1" StartPoint="0,0"> 
     <GradientStop Color="#F3F3F3" Offset="0"/> 
     <GradientStop Color="#EBEBEB" Offset="0.5"/> 
     <GradientStop Color="#DDDDDD" Offset="0.5"/> 
     <GradientStop Color="#CDCDCD" Offset="1"/> 
    </LinearGradientBrush> 
    <SolidColorBrush x:Key="ButtonNormalBorder" Color="#FF707070"/> 
    <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"> 
     <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/> 
     <Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/> 
     <Setter Property="BorderBrush" Value="{StaticResource ButtonNormalBorder}"/> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
     <Setter Property="HorizontalContentAlignment" Value="Center"/> 
     <Setter Property="VerticalContentAlignment" Value="Center"/> 
     <Setter Property="Padding" Value="1"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
       <Border Background="{TemplateBinding Background}" 
       BorderBrush="Black" BorderThickness="2" CornerRadius="5" x:Name="bd"> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
         Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
         SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/> 
         </Border> 
        <ControlTemplate.Triggers> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsMouseOver" Value="True"/> 
          </MultiTrigger.Conditions> 
          <Setter TargetName="bd" Property="Background" Value="#FFF40000"/> 
         </MultiTrigger> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter Property="Foreground" Value="#ADADAD"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 
<Grid x:Name="LayoutRoot"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="0.048*"/> 
     <ColumnDefinition Width="0.952*"/> 
    </Grid.ColumnDefinitions> 
    <Button HorizontalAlignment="Left" Margin="106.048,102,0,0" Style="{DynamicResource ButtonStyle1}" VerticalAlignment="Top" Width="75" Content="Button" Grid.Column="1"/> 
</Grid> 

+0

Merci Kishore. Peut-être que je cherchais à réaliser quelque chose qui n'est pas censé être. Votre exemple de code, en particulier la zone du modèle de bouton, m'a indiqué une solution à mon problème. – Robert

Questions connexes