2008-12-20 6 views
3

Dans mon bouton personnalisé, je dois montrer qu'il a un focus (donne une sensation tactile à tabulation sur le bouton) et montrer que son pressé, mais ce que j'ai trouvé est mon état focal affiche plutôt mon état enfoncé. Comment puis-je corriger cela? Je voudrais avoir la souris sur la touche non enfoncée puis sur la souris (lorsque le bouton est cliqué)Silverlight style de bouton comment éviter l'état focalisé lorsque le bouton est pressé?

Voici un exemple de mon modèle de contrôle.

<UserControl.Resources> 
    <Style x:Key="GavelButtonStyle" TargetType="Button"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Grid Background="#FF000000" x:Name="grid"> 
         <vsm:VisualStateManager.VisualStateGroups> 
          <vsm:VisualStateGroup x:Name="FocusStates"> 
           <vsm:VisualState x:Name="Unfocused"/> 
           <vsm:VisualState x:Name="Focused"> 
            <Storyboard> 
             <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="image" Storyboard.TargetProperty="(UIElement.OpacityMask).(SolidColorBrush.Color)"> 
              <SplineColorKeyFrame KeyTime="00:00:00" Value="#FFFFFFFF"/> 
             </ColorAnimationUsingKeyFrames> 
             <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="grid" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"> 
              <SplineColorKeyFrame KeyTime="00:00:00" Value="#FF2844B9"/> 
             </ColorAnimationUsingKeyFrames> 
            </Storyboard> 
           </vsm:VisualState> 
          </vsm:VisualStateGroup> 
          <vsm:VisualStateGroup x:Name="CommonStates"> 
           <vsm:VisualStateGroup.Transitions> 
            <vsm:VisualTransition GeneratedDuration="00:00:00.2000000"/> 
           </vsm:VisualStateGroup.Transitions> 
           <vsm:VisualState x:Name="MouseOver"> 
            <Storyboard> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="image" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"> 
              <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1.5"/> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="image" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"> 
              <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1.5"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </vsm:VisualState> 
           <vsm:VisualState x:Name="Normal"/> 
           <vsm:VisualState x:Name="Pressed"> 
            <Storyboard> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="image" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"> 
              <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0.5"/> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="image" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"> 
              <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0.5"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </vsm:VisualState> 
           <vsm:VisualState x:Name="Disabled"/> 
          </vsm:VisualStateGroup> 
         </vsm:VisualStateManager.VisualStateGroups> 
         <Image Cursor="Hand" x:Name="image" RenderTransformOrigin="0.5,0.5" Source="11_64x64.png" Stretch="Fill" OpacityMask="#FF000000"> 
          <Image.RenderTransform> 
           <TransformGroup> 
            <ScaleTransform/> 
            <SkewTransform/> 
            <RotateTransform/> 
            <TranslateTransform/> 
           </TransformGroup> 
          </Image.RenderTransform> 
         </Image> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources>; 
+0

Pouvez-vous poster votre XAML? – bendewey

Répondre

1

Lorsque vous appuyez sur elle se focalise, ne peut rien faire à ce sujet ... vous pouvez effacer le contenu de mise au point de l'État de Visual Manager, puis il ne sera pas regarder concentré, mais obtenir attention de l'interaction de la souris, peu importe ce que vous faites.

0

J'ai réussi à définir IsTabStop sur False. Je ne m'attendrais pas à ce qu'il empêche la mise au point après le clic, mais cela semble être ce qu'il fait. Après avoir cliqué sur le bouton, la barre d'espace n'est pas capturée.

Questions connexes