2010-06-06 4 views
0

Je n'arrive pas à déterminer comment définir par programmation le «contour» de ma flèche. J'utilise ces boutons dans une barre de menu et je veux que la flèche sélectionnée passe au vert et à tous les autres gris.Définition de l'élément ControlTemplate par programme

<Style x:Key="FooterGrayButtonStyle" TargetType="{x:Type Button}"> 
    <Setter Property="HorizontalContentAlignment" Value="Center"/> 
    <Setter Property="VerticalContentAlignment" Value="Center"/> 
    <Setter Property="MinHeight" Value="35" /> 
    <Setter Property="FontSize" Value="16"/> 
    <Setter Property="Margin" Value="0,5,10,5" /> 
    <Setter Property="Foreground" Value="White" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Grid> 
        <Border x:Name="Bd" Background="#FF535A65" BorderBrush="Black" BorderThickness="1" CornerRadius="10"> 
         <Path x:Name="arrow" Stretch="Fill" Stroke="#FFB1BB1C" StrokeThickness="5" HorizontalAlignment="Right" Margin="5" 
           StrokeEndLineCap="Round" StrokeStartLineCap="Round" StrokeLineJoin="Miter" Width="13" Height="23" Data="M0,0 L1,1 0,2" /> 
        </Border> 
        <ContentPresenter HorizontalAlignment="Left" Margin="15,-2,30,0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsPressed" Value="True"> 
         <Setter TargetName="Bd" Property="Background" Value="#FFB1BB1C" /> 
         <Setter Property="Stroke" TargetName="arrow" Value="White"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="False"> 
         <Setter Property="Stroke" TargetName="arrow" Value="#FFB7B7B7"/> 
         <Setter Property="Foreground" Value="#FFB7B7B7"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Répondre

1

Vous souhaitez généralement exprimer quelque chose qui est un état exprimé visuellement comme une propriété du contrôle. Le bouton n'a pas de propriété intégrée pour exprimer un état sélectionné, mais ToggleButton fait: IsChecked. Si vous ne pouvez pas utiliser un ToggleButton, vous pouvez créer un Attached Property qui peut être défini à partir de votre code qui détermine le bouton actuellement sélectionné. Cela pourrait ensuite être utilisé dans un déclencheur de la même manière que vous utiliseriez IsChecked:

<Trigger Property="local:MyProperties.IsSelected" Value="True"> 
    <Setter TargetName="arrow" Property="Stroke" Value="Green"/> 
</Trigger> 
0

ne pouvez-vous ajouter un élément déclencheur:

<Trigger Property="IsFocused" Value="True"> 
    <Setter Property="StrokeEndLineCap" Value="Arrow" TargetName="arrow"/> 
</Trigger> 

Ou est-ce le chemin pas à jour avec vos déclencheurs qui est le problème?

Questions connexes