2017-09-04 10 views
0

J'ai 2 bouton qui devrait agir comme interrupteur, donc j'utilise le bouton radio. Mais le style du bouton radio devrait ressembler à un bouton à bascule, ce qui signifie qu'il ne devrait pas y avoir de cercle à vérifier.Style radiobutton comme bouton bascule en xaml

J'ai recherché longtemps sans ressources utiles.

<Style TargetType="{x:Type RadioButton}" BasedOn="{StaticResource {x:Type ToggleButton}}"> 
      <Setter Property="HorizontalAlignment" Value="Center"/> 
      <Setter Property="VerticalAlignment" Value="Center"/> 
     </Style> 


    <Style TargetType="{x:Type ToggleButton}"> 
     <Setter Property="Background" Value="{StaticResource BgColor}" /> 
     <Setter Property="Foreground" Value="{StaticResource FgColor}" /> 
     <Setter Property="BorderBrush" Value="Transparent" /> 
     <Setter Property="Focusable" Value="False" /> 
     <Setter Property="Margin" Value="0" /> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Foreground" Value="{StaticResource HoverColor}" /> 
      </Trigger> 
      <Trigger Property="IsPressed" Value="True"> 
       <Setter Property="BorderBrush" Value="{StaticResource TextBlack}" /> 
      </Trigger> 
      <Trigger Property="IsChecked" Value="True"> 
       <Setter Property="BorderBrush" Value="{StaticResource TextBlack}" /> 
       <Setter Property="Foreground" Value="{StaticResource HoverColor}" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

Mais il laisse un espace noir pour cercle (propriété radio) et de la souris Hover, il montre le cercle pour vérifier ..

Quelqu'un peut-il connaître la meilleure façon de le réaliser ..

Répondre

0

Tout ce que vous devez faire est de définir un style pour vos RadioButtons ressembler à ceci:

<Style TargetType="{x:Type RadioButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <ToggleButton Content="{Binding Path=(Content), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type RadioButton}}}" 
           IsChecked="{Binding Path=(IsChecked), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type RadioButton}}}"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

C'est votre coeur. Vous pouvez ajouter tout ce que vous avez besoin d'ajouter en tant que Setters, ou style ToggleButton dans le ControlTemplate pour ressembler à ce que vous voulez.

+0

La même chose est présente dans App.Xaml que j'ai mentionné .. Mais le problème que je fais face est: 1) Mode par défaut: il ne montre aucun cercle comme prévu mais laisse l'espace pour cela 2) Sur la souris hover: cercle apper de nouveau – srinivas

+0

Ok, ma solution fonctionne pour une raison ou pour une autre si aucun style explicite n'est appliqué à ce contrôle ... Laissez-moi le modifier pour résoudre votre problème. –