Laden...

MouseOver/click Farbänderung

Erstellt von Coooder vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.432 Views
C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 10 Jahren
MouseOver/click Farbänderung

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 😃

148 Beiträge seit 2013
vor 10 Jahren

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

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 10 Jahren

da passiert leider ga nix 😕
abgesehn davon würden die anderen auch nich wieder zu schwarz wechseln wenn man auf einen anderes Label clicked

Z
403 Beiträge seit 2007
vor 10 Jahren

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é

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 10 Jahren

ich hab das doch in einem style definiert ... das problem is das IsPressed bei einem label nicht funktioniert 😕

Z
403 Beiträge seit 2007
vor 10 Jahren

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é

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 10 Jahren

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