2009-09-03 7 views

ответ

3

Что-то вроде этого:

<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> 

Я не проверял код, но вы должны получить идею :)

Edit: Эллипс, конечно, имеет заливку свойство вместо фона.

Андрей

+0

, где это делается в xaml? – AwkwardCoder

+0

Вы можете поместить это в любой раздел .Resources, над «визуальным уровнем» вашей кнопки. Каждая кнопка ниже будет овальной. Например:

1

Следующий код может перейти непосредственно в окне и поддерживает IsPressed и 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> 
Смежные вопросы