2008-12-18 3 views
3

J'ai décidé d'essayer de créer un bouton circulaire, donc en utilisant l'expression mélange, j'ai laissé tomber un contrôle de bouton sur mon xaml. J'ai ensuite créé un modèle à partir de celui-ci en choisissant "Modifier les pièces de contrôle (modèle)" -> "Modifier une copie". J'essaie de le concevoir de sorte que les côtés gauche et droit du bouton soient toujours des demi-cercles parfaits, de sorte que peu importe la hauteur ou la largeur du bouton, le rayon du coin atteindrait la moitié de la largeur ou la moitié de la longueur le bouton, en fonction de ce qui était plus petit. De cette façon, si le bouton était tendu, le haut et le bas seraient des demi-cercles parfaits, et si le bouton était étendu, la gauche et la droite seraient des demi-cercles parfaits. Est-il possible de faire cela?Silverlight: Création d'un modèle de bouton rond

Répondre

2

Ceci est proche, mais en faire un bord parfaitement rond est plus difficile. Je l'ai fait en faisant la forme ronde, pas un rectangle avec des courbes rouneded. Voir si cela aide:

<Style x:Key="roundButton" 
     TargetType="Button"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="Button"> 
     <Grid> 
      <Grid.RowDefinitions> 
      <RowDefinition Height="0.479*" /> 
      <RowDefinition Height="0.521*" /> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="0.147*" /> 
      <ColumnDefinition Width="0.685*" /> 
      <ColumnDefinition Width="0.168*" /> 
      </Grid.ColumnDefinitions> 
      <vsm:VisualStateManager.VisualStateGroups> 
      <vsm:VisualStateGroup x:Name="FocusStates"> 
       <vsm:VisualState x:Name="Unfocused" /> 
       <vsm:VisualState x:Name="Focused" /> 
      </vsm:VisualStateGroup> 
      <vsm:VisualStateGroup x:Name="CommonStates"> 
       <vsm:VisualState x:Name="MouseOver" /> 
       <vsm:VisualState x:Name="Normal" /> 
       <vsm:VisualState x:Name="Pressed" /> 
       <vsm:VisualState x:Name="Disabled" /> 
      </vsm:VisualStateGroup> 
      </vsm:VisualStateManager.VisualStateGroups> 
      <Path Margin="-2,8,2,8" 
       Grid.Column="1" 
       Grid.RowSpan="2" 
       Fill="{TemplateBinding Background}" 
       Stretch="Fill" 
       Stroke="#FF000000" 
       Data="M25.999998,0.5 L26.499998,0.55732149 L26.499998,0.50000316 L184.5,0.50000316 L184.5,0.55732256 L185,0.5 C199.0833,0.50000429 210.5,13.483747 210.5,29.500002 C210.5,45.516144 199.0833,58.500004 185,58.500004 L184.5,58.44268 L184.5,58.500004 L26.499998,58.500004 L26.499998,58.44268 L25.999998,58.500004 C11.916747,58.500004 0.5,45.516209 0.5,29.500002 C0.5,13.483672 11.916748,0.50000429 25.999998,0.5 z" 
       StrokeThickness="0" /> 
      <ContentControl FontFamily="{TemplateBinding FontFamily}" 
          FontSize="{TemplateBinding FontSize}" 
          FontStyle="{TemplateBinding FontStyle}" 
          FontWeight="{TemplateBinding FontWeight}" 
          Foreground="#FFFFFFFF" 
          HorizontalContentAlignment="Center" 
          VerticalContentAlignment="Center" 
          Grid.ColumnSpan="3" 
          Grid.RowSpan="2" 
          Content="{TemplateBinding Content}" /> 
     </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
    <Setter Property="Background" 
      Value="#FFFF0000" /> 
</Style> 
Questions connexes