Hallo,
folgendes Beispiel (nur eine Test-Application)
MainWindow hat ein RoutedEvent (ColorChangedEvent)
MainWindow hat auch einen Button, welcher einen EventTrigger auf das RoutedEvent ColorChangedEvent hat. Allerdings funktioniert das nicht.
//Routed Event
public static readonly RoutedEvent ColorChangedEvent = EventManager.RegisterRoutedEvent("ColorChanged", RoutingStrategy.Bubble,
typeof(RoutedPropertyChangedEventHandler<Color>), typeof(MainWindow));
//Event Wrapper
public event RoutedPropertyChangedEventHandler<Color> ColorChagend
{
add { AddHandler(ColorChangedEvent, value); }
remove { RemoveHandler(ColorChangedEvent, value); }
}
private void OnColorProperyChanged(Color oldvalue, Color newvalue)
{
RoutedPropertyChangedEventArgs<Color> arg = new RoutedPropertyChangedEventArgs<Color>(oldvalue, newvalue);
arg.RoutedEvent = MainWindow.ColorChangedEvent;
RaiseEvent(arg);
}
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<EventTrigger RoutedEvent="local:MainWindow.ColorChanged">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever">
<ColorAnimation Storyboard.TargetProperty="(Button.Foreground).(SolidColorBrush.Color)"
From="Gray" To="Red" Duration="0:0:1"></ColorAnimation>
<ColorAnimation Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"
From="Gray" To="Red" Duration="0:0:1"></ColorAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
irgendwie scheint das RoutedEvent nicht anzukommen, denn setzte ich das RoutedEvent (im Style) auf Window.Loaded, dann wird das Storyboard ausgeführt.
Mache ich da irgendwo einen Denkfehler?
Grüße, David
Programming is like sex: One mistake and
you have to support it your lifetime