myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und Silverlight » ListBox Mouseover-Event auf Wert einer Bool-Property binden
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

ListBox Mouseover-Event auf Wert einer Bool-Property binden

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Annika234 Annika234 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.05.2019
Beiträge: 13


Annika234 ist offline

ListBox Mouseover-Event auf Wert einer Bool-Property binden

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich bin zurzeit am entwickeln einer WPF-Anwendung bei der die Elemente je nach Status einer Variablen gefärbt werden. Wenn das MouseOver bzw. Selected Event getriggert wird möchte ich die Farbe natürlich auch entsprechend der Variablen ändern.

XML-Code:
        <ListBox  ItemsSource="{Binding Einkauf, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
            <ListBox.Resources>
                <Style TargetType="ListBoxItem">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ImWagen}" Value="True">
                            <Setter Property="Background" Value="Green"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ListBox.Resources>
        </ListBox>

So sieht meine Listbox aktuell aus. Bei MouseOver bzw. Selected möchte ich wenn die Bool-Property ImWagen auf true ist den Background Hellgrün haben. Wenn ImWagen False ist, soll es allerdings wie im Standart bleiben.
Ich bekomme bisher aber immer nur eins von beiden hin. Also Property ODER MouseOver aber nicht beides gleichzeitig.
Wie muss ich den Trigger schreiben, dass ich beides haben kann?

Vielen Dank im Voraus
Annika
11.05.2019 21:16 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.187
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Wenn du mehrere Bedingungen hast, kannst du MultiTrigger bzw. MultiDataTrigger verwenden. Siehe dazu auch den Abschnitt "Styles und Trigger" in  [Artikel] MVVM und DataBinding
12.05.2019 15:33 Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 2 Monate.
Annika234 Annika234 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.05.2019
Beiträge: 13

Themenstarter Thema begonnen von Annika234

Annika234 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sorry, dass ich mich so spät erst melde, aber ich hatte bisher nicht wirklich Zeit das auszuprobieren. Jetzt habe ich mich wieder drangesetzt. Ich habe das mit dem Multitrigger mal ausprobiert. Allerdings ändert sich die Farbe bei dem geklickten Element nicht sondern bleibt immer grau. Egal ob mein Bool-Wert true oder false ist. Bei nicht geklickten Elementen funktioniert es
09.08.2019 05:08 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.187
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Wir können dir leider nicht helfen, wenn du keinen Code zeigst. Siehe dazu  [Hinweis] Wie poste ich richtig?
09.08.2019 13:39 Beiträge des Benutzers | zu Buddylist hinzufügen
Annika234 Annika234 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.05.2019
Beiträge: 13

Themenstarter Thema begonnen von Annika234

Annika234 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

XML-Code:
<ListBox  ItemsSource="{Binding Einkauf, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="1" Grid.RowSpan="6">
            <ListBox.Resources>
                <Style TargetType="ListBoxItem">
                    <Style.Triggers>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Property="IsSelected" Value="True"/>
                                <Condition Binding="{Binding ImWagen}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Background" Value="LightGreen"/>
                        </MultiDataTrigger>
                        <DataTrigger Binding="{Binding ImWagen}" Value="True">
                            <Setter Property="Background" Value="Green"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ListBox.Resources>
        </ListBox>

Der normale DataTrigger funktioniert. Nur der MultiDataTrigger nicht. Funktioniert auch nich wenn ich multiTrigger nehme. Eine von den beiden Conditions schmeißt immer einen Fehler
09.08.2019 14:22 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.187
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also wenn du wirklich Hilfe hier suchst, dann solltest du auch alle Informationen mitgeben, die wichtig sind, um dir helfen zu können. Die Fehlermeldung gehört dazu.

 [Hinweis] Wie poste ich richtig?

Ansonsten hast du einen Debugger, um die Fehlerursache zu finden:
 [Artikel] Debugger: Wie verwende ich den von Visual Studio?
 [Artikel] MVVM und DataBinding, Abschnitt Debugging
09.08.2019 21:51 Beiträge des Benutzers | zu Buddylist hinzufügen
Annika234 Annika234 ist weiblich
myCSharp.de-Mitglied

Dabei seit: 11.05.2019
Beiträge: 13

Themenstarter Thema begonnen von Annika234

Annika234 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also mein Code steht ja schon weiter oben, daran habe ich nichts geändert. Ich kann den Code fehlerfrei kompilieren. Wenn ich allerdings das Fenster mit der Listbox öffne bekomme ich vom ShowDialog() den Fehler

Fehlermeldung:
"Nicht-NULL wert für Binding erforderlich"

Wenn ich die Condition mit dem Binding auskommentiere öffnet sich das Fenster. Allerdings funktioniert die Färbung des selektierten Objektes nicht.

Wenn ich jetzt anstatt dem MultiDataTrigger einen MultiTrigger verwende, dann bekomme ich den Fehler

Fehlermeldung:
"Nicht-NULL Wert für Property Erforderlich"

.Wenn ich jetzt die Condition mit der Property auskommentiere lässt sich das Fenster auch ohne Probleme öffnen.

Das sieht für mich irgendwie nicht so aus als würde eines der beiden einen NULL Wert weitergeben.


mycsharp.de  Moderationshinweis von Abt (12.08.2019 12:07):

Bilder entfernt
 [Hinweis] Wie poste ich richtig?

 

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Annika234 am 13.08.2019 05:54.

09.08.2019 22:11 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 4 Monate.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 21.09.2019 18:03