2009-09-03 15 views

Répondre

3

Quelque chose comme ceci:

<Style TargetType="{x:Type Button}"> 
<Setter Property="Template"> 
<Setter.Value> 
<ControlTemplate TargetType="{x:Type Button}"> 
<Grid> 
<Ellipse Width="64" Height="32" Fill="Blue" /> 
<ContentControl Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
</Grid> 
</ControlTemplate> 
</Setter.Value> 
</Setter> 
</Style> 

Je n'ai pas testé le code, mais vous devriez avoir l'idée :)

Edit: Le Ellipse bien sûr, a une propriété de remplissage au lieu de fond.

Andrej

+0

où cela se passe-t-il dans le xaml? – AwkwardCoder

+0

Vous pouvez mettre ceci dans n'importe quelle section .Resources, au-dessus du "niveau visuel" de votre bouton. Chaque bouton en dessous sera alors ovale. Par exemple: Andrej

1

Le code suivant peut aller directement dans la fenêtre et prend en charge les déclencheurs IsPressed et IsMouseOver.

<Window.Resources> 

    <ControlTemplate x:Key="ButtonControlTemplate" TargetType="{x:Type Button}"> 
     <Grid> 
      <Ellipse Fill="White" Stroke="Black" VerticalAlignment="Top" Height="32" x:Name="theEllipse"/> 
      <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/> 
     </Grid> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Fill" Value="Yellow" TargetName="theEllipse"/> 
      </Trigger> 
      <Trigger Property="IsPressed" Value="True"> 
       <Setter Property="Fill" Value="Gray" TargetName="theEllipse"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

</Window.Resources> 

<Grid x:Name="LayoutRoot"> 
    <Button HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Content="Button" Template="{DynamicResource ButtonControlTemplate}"/> 
</Grid> 
Questions connexes