Hallo,
ich schreibe gerade einen WPF- in einen Silverlight-Style um. Besser gesagt, ich versuche es. Um das Problem am leichtesten zu beschreiben, hier mal folgendes Beispiel:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| <Style x:Key="MyButtonStyle" TargetType="{x:Type Button}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Grid> <Ellipse x:Name="MyEllipse"> <Ellipse.Fill> <SolidColorBrush Color="Red"/> </Ellipse.Fill> </Ellipse> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="MyEllipse" Property="Fill"> <Setter.Value> <SolidColorBrush Color="Blue"/> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
<Style x:Key="MyButtonStyle" TargetType="Button"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Grid> <Ellipse x:Name="MyEllipse"> <Ellipse.Fill> <SolidColorBrush Color="Red"/> </Ellipse.Fill> </Ellipse> <i:Interaction.Triggers> <i:EventTrigger EventName="MouseMove"> <ic:ChangePropertyAction TargetName="MyEllipse" PropertyName="Fill" IsEnabled={Binding IsMouseOver}> <ic:ChangePropertyAction.Value> <SolidColorBrush Color="Blue"/> </ic:ChangePropertyAction.Value> </ic:ChangePropertyAction> </i:EventTrigger> </i:Interaction.Triggers> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> |
Also, ganz einfach: Einfache Ellipse mit roter Füllfarbe. Während die Maus über dem Button ist, soll die Füllfarbe blau sein, sonst wieder rot.
Nun gelingt es mir zwar mit dem Code oben die Füllfarbe auf blau zu ändern, sobald die Maus darüber ist, jedoch möchte ich den Wert auch wieder auf "default" zurücksetzen.
Wenn es sich nur um diese Füllfarbe handeln würde, könnte ich die MouseEnter und MouseLeave Events dafür benutzen. Da mein Code jedoch weitaus größer ist (in der Action passiert wesentlich mehr), ist das keine Option.
Wie kann man das am elegantesten lösen und warum funktioniert mein Binding auf "IsEnabled" nicht?
Vielen Dank vorab!