2017-04-02 3 views
1

Je ne suis pas en mesure de centrer le texte dans le bouton modèle. "OK" reste en bas au centre ou même en dessous de la bordure du bouton.xaml comment texte du centre dans un bouton modèle

<Window.Resources> 
    <ControlTemplate x:Key="BT_Kids" TargetType="{x:Type Button}"> 
     <Grid> 
      <Ellipse HorizontalAlignment="Left" Height="44.8" Stroke="Black" VerticalAlignment="Top" Width="71.2"> 
       <Ellipse.Fill> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="Black" Offset="0"/> 
         <GradientStop Color="#FF4363EA" Offset="1"/> 
        </LinearGradientBrush> 
       </Ellipse.Fill> 
      </Ellipse> 
      <Viewbox> 
       <ContentControl Margin="10" Content="{TemplateBinding Content}"/> 
      </Viewbox> 
     </Grid> 
    </ControlTemplate> 
</Window.Resources> 
<Grid Margin="0,0,0,2.4"> 

    <Button 
      HorizontalAlignment="Left" 
      VerticalAlignment="Top" 
      Width="75" Margin="189.6,24.6,0,0" 
      Template="{DynamicResource BT_Kids}" FontSize="15">OK</Button> 

</Grid> 

Répondre

1

Retirez le ViewBox, régler la FontSize du Button et définissez les propriétés HorizontalAlignment et VerticalAlignment du ContentPresenter-Center:

<ControlTemplate x:Key="BT_Kids" TargetType="{x:Type Button}"> 
    <Grid> 
     <Ellipse HorizontalAlignment="Left" Height="44.8" Stroke="Black" VerticalAlignment="Top" Width="71.2"> 
      <Ellipse.Fill> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
        <GradientStop Color="Black" Offset="0"/> 
        <GradientStop Color="#FF4363EA" Offset="1"/> 
       </LinearGradientBrush> 
      </Ellipse.Fill> 
     </Ellipse> 
     <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 
    </Grid> 
</ControlTemplate> 

<Button 
     HorizontalAlignment="Left" 
     VerticalAlignment="Top" 
     Width="75" Margin="189.6,24.6,0,0" 
     HorizontalContentAlignment="Center" 
     VerticalContentAlignment="Center" 
     Template="{DynamicResource BT_Kids}" FontSize="30">OK</Button> 

enter image description here

Cela n'a aucun sens de mettre le contenu dans un ViewBox lorsque le Ellipse a une taille fixe.

0

Essayez ceci:

<Button ...> 
    <Button.Content> 
      <StackPanel Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center"> 
      <TextBlock Text="OK"/> 
      </StackPanel> 
     </Button.Content> 
</Button>