-1
votes

Comment créer un bouton à bascule avec une étiquette sans duplication de code?

Je dois avoir un texte à proximité d'un bouton bascule qui dit activement / désactivé relativement.

J'ai obtenu que, en ayant simplement un panneau de pile avec un bouton à bascule et une étiquette à côté, puis dans le code derrière j'utilise simplement Les événements vérifiés / décochés pour modifier le contenu de l'étiquette. Le problème est que j'ai de nombreux boutons à bascule et mon code DUPLICATES MA MODE (pour chaque bouton de bascule, j'ai une étiquette et 2 fonctions). Y a-t-il un moyen plus efficace de le faire? xxx


8 commentaires

Pouvez-vous me donner du code, s'il vous plaît? Comment vais-je accéder à l'étiquette de chaque bouton bascule?


En plus de cela, avez-vous vraiment besoin de l'étiquette? Pourquoi ne définissez-vous pas le contenu du Toggleboutton?


Et oui, j'ai besoin de l'étiquette - le texte doit apparaître à côté du bouton.


Avez-vous envisagé d'utiliser des cases à cocher?


Malheureusement, j'ai besoin d'un bouton de bascule.


Pouvez-vous expliquer ce que vous vouliez dire dans le premier commentaire?


Vous pouvez soit déplacer l'étiquette (qui devrait en réalité être une textblock) dans un ordinateur contenté utilisé comme modèle de Toggleboutton, ou peut-être plus simple, créer un UserControl. Comment ces Togglebuttons sont-ils supposés être utilisés? Seront-ils juste liés à une propriété booléenne dans un modèle de vue?


Oui, c'est seulement sur ou éteint


3 Réponses :


1
votes

Vous pouvez créer un simple uscontrol avec une propriété code> ischecked code> comme celle de la classe ToggleButton: xxx pré>

avec ce code derrière: p>

<local:OnOffButton IsChecked="{Binding SomeViewModelProperty}"/>


0 commentaires

1
votes

Une alternative à un UserControl qui ne va pas trop dans le style, ce serait un Togglebutton et TextBlock non imbriqué dans le contrôleur de commande pour un togglebutton: xxx

qui serait utilisé comme ceci: xxx


3 commentaires

C'est une bonne solution mais trop désordonnée ... j'ai posté ce que j'avais réellement besoin


Eh bien, au lieu de Messy Je l'appellerais réutilisable .


J'hésiterais d'appeler ce "correct", car il y a un Togglebutton imbriqué, mais c'est simple. La meilleure approche serait probablement un radioobutton modélisé, mais cela impliquerait beaucoup plus de xaml.



0
votes

Bien, simple, comme ça sonne, j'ai créé un dictionnaire Dictionnaire BTNS;

Ajout de tous les boutons et étiquettes. P>

puis créé une fonction pour vérifié et un pour décoché: p>

 private void Checked(object sender, RoutedEventArgs e)
        {
            Btns[(ToggleButton)sender].Content = "on;
        }

        private void UnChecked(object sender, RoutedEventArgs e)
        {
            Btns[(ToggleButton)sender].Content = "off";
        }


0 commentaires