Laden...

Eigenes RoutedEvent EventTriggern

Erstellt von david.ka vor 10 Jahren Letzter Beitrag vor 10 Jahren 549 Views
D
david.ka Themenstarter:in
343 Beiträge seit 2005
vor 10 Jahren
Eigenes RoutedEvent EventTriggern

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