Laden...

Animation zurück zu ursprünglicher Hintergrundfarbe?

Erstellt von 7.e.Q vor 13 Jahren Letzter Beitrag vor 13 Jahren 924 Views
7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 13 Jahren
Animation zurück zu ursprünglicher Hintergrundfarbe?

Hallo Leute,

ich hab mal 'ne Frage zu WPF und Animationen: angenommen ich habe ein Control mit einem MouseEnter und einem MouseLeave getriggerten Storyboard. Das MouseEnter Storyboard ändert in einer Animation den Hintergrund des Controls, das MouseLeave Storyboard fährt ihn wieder auf die Ursprungsfarbe zurück. Allerdings hardcoded. Soll heißen, der Hintergrund-Brush des Controls und der Ziel-Brush des MouseLeave Storyboards sind unterschiedliche Brushes, haben nur die gleichen Füllwerte.

Nun hab ich aber eine ganze Reihe Controls (genauer gesagt TabItems), von denen einer über einen DataTrigger farblich markiert ist (anderer Hintergrundfarbe).

Jetzt möchte ich, dass die Animation bei MouseLeave bei allen Controls zur ursprünglichen Hintergrundfarbe läuft. Auch bei dem markierten Control.

Das heißt beispielsweise, dass alle Controls urprünglich einen weißen Hintergrund hatten. Das markierte Control ist rot. Fahre ich mit der Mouse darüber, wird das entsprechende Control hübsch animiert blau. Verlasse ich das Control, soll es wieder weiß oder halt rot werden.

Momentan wird aber auch das vormals rot markierte Control durch MouseLeave hernach weiß.

Lange Rede, kurzer Sinn: wie kriegt man das hin, dass die Zielfarbe des eines Storyboards automatisch die ursprüngliche Hintergrundfarbe des Controls ist?

Danke!

Grüße,
Hendrik

U
1.578 Beiträge seit 2009
vor 13 Jahren

Wie wäre wenn die Animation ein Control darüber in der Farbe verändert, Transparent zu X, das kann dann auch wieder von X zurück auf transparent.

Z.B. Hast du im Header ein Grid mit der Farbe, und darin als Child ein TextBlock
<Grid x:Name="ChangeMe">
<TextBlock Text="Header" />
</Grid>

Dann veränderst du im Storyboard nicht die Farbe des Grids, sondern die Farbe eines Controls dazwischen
<Grid>
<Grid x:Name="ChangeMe">
<TextBlock Text="Header" />
</Grid>
</Grid>

Nur so als Idee.

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 13 Jahren

Hmm, daran hab ich noch gar nicht gedacht. Die Idee ist nicht schlecht. Aktuell hab ich das mit zwei MultiDataTriggers gelöst. Einen für unmarkiert IsMouseOver und einen für markiert IsMouseOver. Unschön, wenn da später noch mehr unterschiedliche States dazu kommen sollten. Da wäre deine Lösung wesentlich praktischer.

👍