7
votes

Augmenter la taille du coup d'un bouton radio

J'utilise des formulaires Windows depuis des années, mais je suis relativement nouveau à WPF. J'ai un certain nombre de boutons radio sans étiquettes (les étiquettes sont en haut de la colonne, ne vous inquiétez pas pour eux! Ce programme va courir sur une tablette afin que je souhaite rendre la zone de frappe pour les boutons radio. possible. J'ai aussi besoin que les boutons radio soient au centre de leur colonne et de leur rangée.

Je peux obtenir le look que je veux en ajoutant ceci à chaque colonne de ma grille: xxx

qui vient de centrer un bouton radio dans une étiquette qui remplit la section de la grille.
Évidemment, le comportement est tout faux si (les événements ne réussissent pas, vous pouvez sélectionner plusieurs radiobuttons sur la même ligne, etc.).

Ce serait un gâteau dans Winforms, j'espère qu'il y aurait une simple Solution dans WPF.

Quelqu'un peut-il aider?

Modifier: la zone orange est la zone de frappe par défaut pour le bouton radio, la zone verte est la zone de frappe que je veux. Jusqu'à présent, cela cherche impossible sans beaucoup de câblage personnalisé

entrer la description de l'image ici < / p>


4 commentaires

Avez-vous essayé des propriétés extensibles? Avez-vous essayé de définir des propriétés sur le bouton radio lui-même, comme l'alignement du contenu? Votre grille est-elle à l'intérieur de toute sorte de panneau (parce que cela sévère)? Avez-vous essayé une bordure au lieu d'une étiquette?


Salut merlyn, oui j'ai essayé des propriétés d'étirement, j'ai essayé toutes les propriétés probables sur le bouton radio lui-même (y compris l'alignement de contenu). La grille est directement sous mon utilisateur (que le contrôle de l'utilisateur est ensuite ajouté à un panneau d'élément, mais cela ne pourrait pas être un problème certainement?). Les frontières ne permettent pas l'alignement du contenu, qui laisse le bouton radio en haut à gauche.


+1 sur la question maintenant que vous avez les captures d'écran. Cela rend beaucoup plus clair ce que vous recherchez.


Je viens de modifier ma réponse. J'espère avoir défini les conteneurs d'une manière similaire à ce que vous avez.


3 Réponses :


1
votes

groupeName code> La propriété de Radiobutton devrait aider. Définissez-le dans chaque radiobutton le même, GL & HF!

<RadioButton GroupName="MyGroup1">
<RadioButton GroupName="MyGroup1">
<RadioButton GroupName="MyGroup1">
<RadioButton GroupName="MyGroup2">
<RadioButton GroupName="MyGroup2">
<RadioButton GroupName="MyGroup3">


1 commentaires

Merci Sukselbax, c'est très utile de savoir et pourrait même être une solution partielle, mais ce que je veux vraiment, c'est d'accroître le blancheur autour du cercle de Radiobutton. Dans Winforms, je viens de désactiver l'autosize, au centre de la "case à cocher" et du dock le tout. J'ai juste besoin d'un équivalent WPF



11
votes

EDIT par nouvelle image en question. strong>

Si cela ne vous dérange pas de taper supplémentaire, vous pouvez utiliser ceci: P>

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style TargetType="RadioButton">
        <Setter Property="RenderTransformOrigin" Value="0.5,0.5" />
        <Setter Property="HorizontalAlignment" Value="Center" />
        <Setter Property="VerticalAlignment" Value="Center" />

        <Setter Property="RenderTransform">
            <Setter.Value>
                <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.5" ScaleY="1.5"/>
            </Setter.Value>
        </Setter>

       <Setter Property="Content">
           <Setter.Value>
               <Border>
                   <Rectangle Margin="-10" Fill="Transparent" />
               </Border
           </Setter.Value>
       </Setter>
    </Style>

</ResourceDictionary>


7 commentaires

@Justin - ... et, vous n'avez pas besoin de l'étiquette. Utilisez horizontalalIgnment = "Centre" Verticalalignment = "Centre" sur le Radiobutton. De plus, Stukselbax Bellow, a une excellente information essentielle sur groupeName .


@Xameli Merci, je sais que je ne devrais pas avoir besoin de l'étiquette, c'est un hack, je voulais juste donner une idée de ce que je suis après. Je ne considérais pas une solution acceptable depuis que je devrais filer Mouseover et cliquer sur des événements. J'ai été détourné par quelque chose d'autre ATM. Je reviens vite


En ce qui concerne cette réponse, bien que très utile de savoir dans un sens général, n'est-ce pas ce que je suis après. Je veux que la case HIT sur le bouton radio soit plus grande, je ne veux pas de bouton radio plus gros. Merci pour la suggestion bien que


Vous avez compris que si cela était sur une tablette, vous voudrez que le contrôle soit plus grand pour l'utilisateur. Vous pouvez utiliser une combinaison de votre méthode et de votre mine. Voir la mise à jour de la réponse (quand j'ai fini de l'écrire)


Merci encore, j'apprécie vraiment l'effort que vous avez mis dans ce domaine, mais la zone de frappe est toujours à droite ou à gauche du bouton radio. J'ai ajouté une image à ma question qui, espérons-le, le rendre plus clair.


La souris sur la souris n'est pas une question (stylet, mais même principal). Le test de coup a des problèmes cependant. Il frappe et les incendies de l'événement vérifié, mais vous devez cliquer deux fois pour obtenir l'apparence vérifiée à afficher (le point vert au centre). Je vais l'accepter de toute façon et essayer de travailler le problème visuel. Mille mercis.


C'était un événement personnalisé qui l'a cessé de fonctionner (de plus tôt Fiddling). La méthode supérieure fonctionne pour moi, pas de problèmes. Tu es un champion.



1
votes

[Je suis juste ajoutant sur les solutions de gras et de Stukselbax]

Il semble que vous devriez modifier le modèle du RADIOBUTON. BOWER est un style Aero par défaut (Win7) avec un modèle modifié, voir le commentaire dans le code. Pour que le code fonctionne, ajoutez cet espace de noms: xmlns: microsoft_windows_themes = "CLR-NAMPACE: Microsoft.Windows.thèmes; Assembly = PrésentationFramework.aero" et assurez-vous de référencer le PrésentationFramework.aero .dll assemblage. xxx


0 commentaires