0
votes

Bouton WPF à CheckBtOxtemplate

J'essaie de donner à la case Cochez la case ControlTemplate sur le bouton voir un exemple dans le livre de texte déclenché WPF.

 <ControlTemplate x:Key="buttoncheckBox" TargetType="{x:Type Button}">
            <Grid>
            <Rectangle Width="20"  Height="20" x:Name="outerCircle" Stroke="Black" StrokeThickness="0.5">
            </Rectangle>
            <Rectangle  Width="10" Height="10" x:Name="InnerCircle">                    
            </Rectangle>
        </Grid> 
        <ControlTemplate.Triggers>
            <Trigger Property="Button.IsMouseOver" Value="True">
                <Setter TargetName="outerCircle" Property="Stroke" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"></Setter>
            </Trigger>
            <Trigger Property="Button.IsPressed" Value="True">
                <Setter TargetName="InnerCircle" Property="Fill" Value="Orange"></Setter>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

 <Button Template="{StaticResource buttoncheckBox}" Margin="10" Padding="10"/>

wpf

3 Réponses :


1
votes

Le problème est que la grille que vous utilisez n'a pas de fond.

Ceci est pour corriger votre problème: P>

   <ControlTemplate x:Key="buttoncheckBox" TargetType="{x:Type Button}">
        <Grid Background="Transparent" Width="20" Height="20">
.....


2 commentaires

Merci.shall vous dites comment le faire fonctionner pour différentes résolutions.As première étape, j'ai gardé la largeur et la hauteur valeurs codées


@Nagasree s'il vous plaît vérifier ma réponse. Je l'ai mis à jour pour vous montrer comment dialoguer correctement le bouton. Cela se comportera exactement comme une touche par défaut .



1
votes

Le seul élément actuellement disponible pour le test HIT est le rectangle.stroke (la petite bordure ou la ligne) lorsque vous interagissez avec cette ligne mince, vous reconnaîtrez qu'il se comportera comme vous le souhaitez. . Pour rendre l'ensemble rectangle Hit Test visible Vous devez définir la propriété rectangle.frillez des deux rectangles : xxx

Pour autoriser la touche pour redimensionner correctement utiliser un bordure . Pour activer la touche pour afficher du contenu comme une icône ou un texte d'étiquette, vous devez ajouter un fichier contentpresenter : xxx

et Utilisez-le comme ceci: xxx

modifier bouton.padding Pour redimensionner le rectangle interne .


2 commentaires

Salut vous avez gardé contentpresenter dans le modèle, mais pourquoi le texte de l'étiquette n'est pas visible lorsque je l'utilise? Vous n'avez pas utilisé Remplir = "transparent" toujours, il manipule la poignée de souris.


@Nagasree La frontière traite les événements de la souris. Borge.backgroud est lié à la touche BOUTON DE MONTAGNE DE MONTAGNE. / CODE>. La touche .background est transparent . Le texte de la marque est là. Il suffit d'augmenter la touche .Width et bouton.Height et vous pouvez le lire. Je mets à la fois à '80'. Ou utiliser par exemple 80x30. Ou utilisez une touche plus petite.FontSize . Vous pouvez modifier bouton.padding pour redimensionner le rectangle interne .



1
votes

en général, lorsque vous ne définissez pas de fond pour un contrôle ou un panneau tel que la grille , la zone est considérée comme appartenant à la fenêtre mère et C'est pourquoi aucun événement de souris est soulevé.

Si vous ne voulez pas d'arrière-plan réel, vous devez toujours définir la propriété fond de la grille sur transparent < / Code> Pour les mouvements de la souris et les clics à enregistrer.

Vous n'avez pas besoin de spécifier une taille fixe pour la grille . Il suffit de définir le fond devrait suffire: xxx


0 commentaires