2 votes

Modèle WPF pour ToggleButton oui/non

Quelqu'un peut-il m'aider à trouver un modèle simple pour qu'un ToggleButton WPF affiche "oui" ou "non" en fonction de son état de basculement ?

Je ne veux pas que cela ressemble à un bouton, juste à un morceau de texte qui s'affiche comme oui ou non.

J'aimerais qu'il s'agisse d'un modèle que je puisse simplement ajouter comme style à tous mes contrôles de type Toggle existants.

J'ai essayé avec Blend, mais je suis novice en matière de modèles et je ne savais pas comment m'y prendre.

11voto

Viv Points 15531

Dans le prolongement de la réponse de @Batuu, pour ne conserver que le contenu sous forme de texte, il suffit de mettre à jour le style avec les éléments suivants

Mise à jour de

<Style x:Key="OnOffToggleStyle" TargetType="ToggleButton">
  <Setter Property="Content" Value="Off"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type ToggleButton}">
        <ContentPresenter />
      </ControlTemplate>
    </Setter.Value>
  </Setter>
  <Style.Triggers>
      <Trigger Property="IsChecked" Value="True">
          <Setter Property="Content" Value="On">
          </Setter>
      </Trigger>
  </Style.Triggers>
</Style>

L'ajout ici par rapport à la réponse originale est

  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type ToggleButton}">
        <ContentPresenter />
      </ControlTemplate>
    </Setter.Value>
  </Setter>

En fait, vous définissez le modèle du bouton comme étant le contenu qu'il contient.

4voto

Batuu Points 495

Vous pouvez le faire facilement avec un style :

    <Window x:Class="WpfTest.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style x:Key="OnOffToggleStyle" TargetType="ToggleButton">
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Content">
                        <Setter.Value>
                            <TextBlock Text="Yes"/>
                        </Setter.Value>
                    </Setter>
                </Trigger>
                <Trigger Property="IsChecked" Value="False">
                    <Setter Property="Content">
                        <Setter.Value>
                            <TextBlock Text="No"/>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>
        <ToggleButton Style="{StaticResource OnOffToggleStyle}"/>
    </Grid>
</Window>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X