2012-09-18 29 views

Respuesta

41

Esta es una manera muy rápida de hacerlo. Se puede cambiar a un estilo y se puede hacer más flexible creando un TemplatedControl que permita al diseñador cambiar fácilmente los colores y otras propiedades.

<Button Width="100" 
     Height="100"> 
    <Button.Template> 
     <ControlTemplate TargetType="Button"> 
      <Grid> 
       <Ellipse Stroke="Black" 
         StrokeThickness="2"> 
        <Ellipse.Fill> 
         <RadialGradientBrush> 
          <GradientStop Offset="0" 
              Color="Lime" /> 
          <GradientStop Offset="1" 
              Color="Lime" /> 
          <GradientStop Offset="1" 
              Color="Gold" /> 
          <RadialGradientBrush.Transform> 
           <TransformGroup> 
            <ScaleTransform ScaleY="0.65" /> 
           </TransformGroup> 
          </RadialGradientBrush.Transform> 
         </RadialGradientBrush> 
        </Ellipse.Fill> 
       </Ellipse> 
       <ContentPresenter HorizontalAlignment="Center" 
            VerticalAlignment="Center"/> 
      </Grid> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 
+1

¡Bien, gracias! Sin embargo, el texto (contenido) no se puede mostrar. – linquize

+3

Para eso use ContentPresenter como abajo en mi respuesta. – ethicallogics

+0

@ethicallogics thx! ¡derecho! – linquize

17
<Button Width="100" Height="100" Content="Abcd"> 
     <Button.Template> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Grid> 
       <Ellipse Fill="Red"/> 
        <ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       </Grid> 
      </ControlTemplate> 
     </Button.Template> 
    </Button> 

debe establecer la altura y anchura del mismo botón para que sea Círculo.

Cuestiones relacionadas