2016-11-03 3 views
0

Je voudrais faire 4 boutons personnalisés, mais la forme que je veux est assez inhabituelle et je suis bloqué sur la façon de le faire. Chaque section différente est exactement la forme que je veux le bouton, est-ce possible? Button shapeWPF Boutons personnalisés

Merci

+0

vous pouvez faire 4 boutons, et placer une section de l'image comme contenu, avec cette section. Ensuite, vous pouvez supprimer l'arrière-plan, les bordures du bouton. –

+0

Comment supprimer les bordures du bouton de base? – elszeus

+1

Allez dans le modèle du bouton et définissez ce que vous voulez là-dedans. Dans 'ControlTemplate', réglez' Background' à 'Transparent',' BorderThickness' à '0', et faites n'importe quoi avec' VisualState' basé sur le type de MouseOver, pressé, quel que soit l'aspect que vous recherchez avec les images . – Meloviz

Répondre

0

Selon notre discussion dans les commentaires, voici un exemple de modèle pour l'un des boutons:

<Style x:Key="QuarterButtonTemplate" TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="Transparent" /> 
    <Setter Property="BorderThickness" Value="0" /> 
    <EventSetter Event="Click" Handler="QuarterButton_Click" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Border CornerRadius="0" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         Background="{TemplateBinding Background}" 
         Padding="4,0"> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 
          <VisualState x:Name="Normal" /> 
          <VisualState x:Name="Pressed" /> 
          <VisualState x:Name="Disabled" /> 
          <VisualState x:Name="MouseOver" /> 
         </VisualStateGroup> 
         <VisualStateGroup x:Name="FocusStates"> 
          <VisualState x:Name="Focused" /> 
          <VisualState x:Name="Unfocused" /> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" 
             HorizontalAlignment="Center" 
             VerticalAlignment="{TemplateBinding VerticalAlignment}" 
             Content="{TemplateBinding Content}" 
             Margin="{TemplateBinding Margin}" /> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Cela vous donne une Button qui ne fondamentalement rien, mais comme une image avec rien pour indiquer autre chose qu'un événement Click. Si vous passez la souris, que vous désactivez, mettez au point, désactivez ou cliquez dessus, la fenêtre vide sera la même à cause du VisualState s vide.