Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom RoutedEvent as EventTrigger

I have my own shape class

public sealed class MirrorTile : Shape

and in this class I added the event

public static readonly RoutedEvent SelectedEnterEvent = EventManager.RegisterRoutedEvent("SelectedEnter", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MirrorTile));

public event RoutedEventHandler SelectedEnter
{
    add
    {
        this.AddHandler(SelectedEnterEvent, value);
    }

    remove
    {
        this.RemoveHandler(SelectedEnterEvent, value);
    }
}

and want to use it in this way

<shapes:MirrorTile>
    <shapes:MirrorTile.Triggers>
        <EventTrigger RoutedEvent="SelectedEnter">
            <BeginStoryboard Storyboard="{StaticResource SelectShape}"/>
        </EventTrigger>
    </shapes:MirrorTile.Triggers>
</shapes:MirrorTile>

After starup I get the exception: {"RoutedEventConverter cannot convert from System.String."}

What I'm doing wrong and how can I fix this problem?

like image 277
Christian Avatar asked Feb 25 '13 13:02

Christian


People also ask

Which of the following is routing strategy of routed events?

The routed event then routes to successive parent elements, invoking their event handlers in turn, until it reaches the element tree root. Most routed events use the bubbling routing strategy.

What is RoutedEventArgs C#?

RoutedEventArgs(RoutedEvent) Initializes a new instance of the RoutedEventArgs class, using the supplied routed event identifier. RoutedEventArgs(RoutedEvent, Object)

What is routed events in WPF with example?

In a WPF application, events are often implemented as a tunneling/bubbling pair. So, you'll have a preview MouseDown and then a MouseDown event. Given below is a simple example of a Routed event in which a button and three text blocks are created with some properties and events.


3 Answers

<EventTrigger RoutedEvent="shapes:MirrorTile.SelectedLeave">

the namespace was missing also.

like image 194
Christian Avatar answered Oct 11 '22 10:10

Christian


You have to provide the type as well:

<EventTrigger RoutedEvent="MirrorTile.SelectedEnter"></EventTrigger>

Edit upon comment:

Have you tried adding a namespace to your XAML declaration?

 xmlns:local="clr-namespace:YourNameSpace"

Then fix this to:

 <EventTrigger RoutedEvent="local:MirrorTile.SelectedEnter"></EventTrigger>
like image 42
l46kok Avatar answered Oct 11 '22 09:10

l46kok


I think you are missing the type that defines your event:

<EventTrigger RoutedEvent="MirrorTile.SelectedEnter">
like image 2
satnhak Avatar answered Oct 11 '22 08:10

satnhak