Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
MouseOver/click Farbänderung
Coooder
myCSharp.de - Member



Dabei seit:
Beiträge: 186

Themenstarter:

MouseOver/click Farbänderung

beantworten | zitieren | melden

hi leute,

in meinem programm hab ich so eine Navigation aus ein paar labels gemacht, wenn man mit der Maus drüber geht ändert das label seine Farbe von schwarz zu so nem grün.
Wenn man wieder mit der Maus runter geht wird es wieder schwarz, soweit so gut ...

wenn man ein label anclicked bleibt es in der grünen farbe, und das zuvor angeclickte wird wieder schwarz

im prinzip klappt das auch alles für sich, aber wenn ich ein label angeclicked habe dann funktioniert der MouseOver effekt nich mehr :/
das liegt glaube ich daran das der mouseover über xaml und der click effekt über c# code implementiert is
<Style x:Key="MouseOver" TargetType="Label">
            <Style.Triggers>
                <Trigger Property="Button.IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="#FF6BBF62" />
                </Trigger>
            </Style.Triggers>
        </Style>

switch (((Label)sender).Name)
            {
                case "CoverLetterLabel":
                    {
                        ContentPresenter.Content = new CoverLetterControl();
                        CoverLetterLabel.Foreground = accentColor;
                        CvLabel.Foreground = Brushes.Black;
                        CertificateLabel.Foreground = Brushes.Black;
                        ContactLabel.Foreground = Brushes.Black;
                    }
                    break;
                case "CvLabel":
                    {
                        ContentPresenter.Content = new CvControl();
                        CoverLetterLabel.Foreground = Brushes.Black;
                        CvLabel.Foreground = accentColor;
                        CertificateLabel.Foreground = Brushes.Black;
                        ContactLabel.Foreground = Brushes.Black;
                    }
                    break;
                case "CertificateLabel":
                    {
                        ContentPresenter.Content = new CertificateControl();
                        CoverLetterLabel.Foreground = Brushes.Black;
                        CvLabel.Foreground = Brushes.Black;
                        CertificateLabel.Foreground = accentColor;
                        ContactLabel.Foreground = Brushes.Black;
                    }
                    break;
                case "ContactLabel":
                    {
                        ContentPresenter.Content = new ContactControl();
                        CoverLetterLabel.Foreground = Brushes.Black;
                        CvLabel.Foreground = Brushes.Black;
                        CertificateLabel.Foreground = Brushes.Black;
                        ContactLabel.Foreground = accentColor;
                    }
                    break;
            }

optimaler weise würde ich das was ich mit c# code implementiert habe auch lieber in xaml machen, ich denke dann würde das auch klappen .... allerdings habe ich nich rausgefunden wie man das macht :/

kann mir da jemand vieleicht weiter helfen? wäre wirklich toll :)
private Nachricht | Beiträge des Benutzers
Geaz
myCSharp.de - Member

Avatar #avatar-3446.png


Dabei seit:
Beiträge: 150
Herkunft: Frankfurt

beantworten | zitieren | melden

Probiermal folgendes Xaml aus:


<Trigger Property="IsPressed" Value="true">
     <Setter Property="Foreground" Value="#DEINEFARBE" />
</Trigger>

Das ist jedenfalls der Trigger für einen Click-Effekt.

Gruß,
Geaz
private Nachricht | Beiträge des Benutzers
Coooder
myCSharp.de - Member



Dabei seit:
Beiträge: 186

Themenstarter:

beantworten | zitieren | melden

da passiert leider ga nix :/
abgesehn davon würden die anderen auch nich wieder zu schwarz wechseln wenn man auf einen anderes Label clicked
private Nachricht | Beiträge des Benutzers
Zicore
myCSharp.de - Member



Dabei seit:
Beiträge: 413

beantworten | zitieren | melden

Hallo Coooder,

du solltest deine verschiedenen (Click) Styles auch als Styles bzw. Templates definieren, also im XAML wo es hin gehört. An der Stelle musst du dich einfach weiter einlesen.

Zudem überschreibst du mit jedem Klick den Inhalt mit einer neuen Instanz, daher wirst du dein Hover Effekt nicht mehr sehen, weil er vermutlich im Hintergrund ist.

André
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Zicore am .
private Nachricht | Beiträge des Benutzers
Coooder
myCSharp.de - Member



Dabei seit:
Beiträge: 186

Themenstarter:

beantworten | zitieren | melden

ich hab das doch in einem style definiert ... das problem is das IsPressed bei einem label nicht funktioniert :/
private Nachricht | Beiträge des Benutzers
Zicore
myCSharp.de - Member



Dabei seit:
Beiträge: 413

beantworten | zitieren | melden

Hallo Coooder,

das ist jetzt zwar Offtopic aber trotzdem: Warum verwendest du ein Label wenn es eine IsPressed Eigenschaft (und Event) haben soll?

Verwende doch einfach einen Button und passe den Style an.
Dein Problem sollten sich dann auch von selbst lösen.

Warum einfach wenn es kompliziert geht

Du solltest jetzt nicht weiter daraufeingehen, der Thread ist sowieso hart an der Grenze zu Grundlagenwissen.

André
private Nachricht | Beiträge des Benutzers
Coooder
myCSharp.de - Member



Dabei seit:
Beiträge: 186

Themenstarter:

beantworten | zitieren | melden

weil nen button z.B schon standart mäßig nen nen mouseover effeckt hat und so weiter ...
ich weiß zwar das man das auch irgentwie bearbeten kann aber es erschien mir einfacher ein label zu benutzen, weil das dort nich nötig is

deswegen hab ich ja hier das thema erstellt, damit mit mir über sinvollere alternativen spricht als meine lösungsversuche
private Nachricht | Beiträge des Benutzers