Laden...

Toggle-Button Backcolor für True und False ändern

Erstellt von BJA-CH vor 6 Jahren Letzter Beitrag vor 6 Jahren 4.498 Views
B
BJA-CH Themenstarter:in
59 Beiträge seit 2017
vor 6 Jahren
Toggle-Button Backcolor für True und False ändern

Salü zäme
Ich möchte je nach Zustand des Toggle-Button die Backcolor ändern. Mit der Anpassung des Backcolors ändert sich lediglich die Farbe beim Zustand "False".
Bei Zustand des Controls für "True" wird permanent "LightBlue" angezeigt, egal, was ich bei Backcolor eintrage.
Offenbar wird im Control mit Definitionen in den Templates eine Steuerung des Farbverhaltens gemacht.
Wo finde ich eine entsprechende Dokumentation?
Wie muss ich grundsätzlich vorgehen, um die Farbe des Steuerelementes ToggleButton beim Status IsChecked = True zu ändern?

1.040 Beiträge seit 2007
vor 6 Jahren

Zeig mal deinen Code.

709 Beiträge seit 2008
vor 6 Jahren

Leg mal eine Kopie des Originaltemplates an.
Darin siehst du dann, wie das alles aufgebaut ist und wo die Trigger ansetzen.

Um eine Kopie anzulegen, wählst du den ToggleButton im XAML aus, suchst im Property Explorer die Template-Eigenschaft und klickst dann auf das kleine Kästchen am rechten Rand. Dort wählst du "Convert to new Resource" aus und bestimmst, wo die Template-Kopie erzeugt werden soll.

Gruß
pinki

5.658 Beiträge seit 2006
vor 6 Jahren

Hi BJA-CH,

Wie muss ich grundsätzlich vorgehen, um die Farbe des Steuerelementes ToggleButton beim Status IsChecked = True zu ändern?

Siehe dazu [Artikel] MVVM und DataBinding, Abschnitt 4. Styles und Trigger

Weeks of programming can save you hours of planning

B
BJA-CH Themenstarter:in
59 Beiträge seit 2017
vor 6 Jahren

Ich kann euch gerne zeigen wie ich den ToogleButton eingebaut habe:


    <Grid>
        <ToggleButton Width="50" Height="25" Name="button"
                      IsChecked="{Binding Path=Check, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
            <ToggleButton.Style>
                <Style TargetType="ToggleButton">
                    <Setter Property="Background" Value="White"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=button, Path=IsChecked}" Value="True">
                            <Setter Property="Background" Value="Green"/>
                            <Setter Property="Content" Value="True"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding ElementName=button, Path=IsChecked}" Value="False">
                            <Setter Property="Background" Value="Red"/>
                            <Setter Property="Content" Value="False"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ToggleButton.Style>
        </ToggleButton>
    </Grid>

Wie ihr seht, wird bei Status False der Button rot gezeichnet. Beim Status True aber leider nicht grün wie verlangt, sondern LightBlue.

Und nein, ich kann kein Template zeigen, weil ich keines gebaut habe. ich möchte lediglich die Farbe des Controls je nach Staus verändern.

B
BJA-CH Themenstarter:in
59 Beiträge seit 2017
vor 6 Jahren

Danke pinki...
So geht es! Schon wieder was neues gelernt!!
Danke dir...

1.040 Beiträge seit 2007
vor 6 Jahren

Und wie geht es jetzt? 🤔

B
BJA-CH Themenstarter:in
59 Beiträge seit 2017
vor 6 Jahren

Das Control-Template des Toggle-Controls, wie von pinki beschrieben auslesen, dieses anpassen und lokal in die xaml-Definition einbinden...