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"/>
3 Réponses :
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">
.....
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 code>.
Le seul élément actuellement disponible pour le test HIT est le Pour autoriser la touche code> (code> pour redimensionner correctement utiliser un et Utilisez-le comme ceci: p> modifier rectangle.stroke code> (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 code> Hit Test visible Vous devez définir la propriété rectangle.frillez code> des deux rectangles code>: bordure code>. Pour activer la touche code> pour afficher du contenu comme une icône ou un texte d'étiquette, vous devez ajouter un fichier contentpresenter code>: p> bouton.padding code> Pour redimensionner le rectangle interne code>. p> p>
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 code> traite les événements de la souris. Borge.backgroud Code> est lié à la touche BOUTON DE MONTAGNE DE MONTAGNE. / CODE>. La touche .background code> est transparent code>. Le texte de la marque est là. Il suffit d'augmenter la touche .Width code> et bouton.Height code> et vous pouvez le lire. Je mets à la fois à '80'. Ou utiliser par exemple 80x30. Ou utilisez une touche plus petite.FontSize code>. Vous pouvez modifier bouton.padding code> pour redimensionner le rectangle interne code>.
en général, lorsque vous ne définissez pas de fond code> pour un contrôle ou un panneau tel que la grille Si vous ne voulez pas d'arrière-plan réel, vous devez toujours définir la propriété code> fond code> de la grille code> code> sur Vous n'avez pas besoin de spécifier une taille fixe pour la grille code>, la zone est considérée comme appartenant à la fenêtre mère et C'est pourquoi aucun événement de souris est soulevé. transparent < / Code> Pour les mouvements de la souris et les clics à enregistrer. P> code>. Il suffit de définir le fond code> devrait suffire: p>
Avez-vous vu cette page: Docs. microsoft.com/en-us/dotnet/framework/wpf/controls/.../a>?