自定义RoutedEvent作为EventTrigger

Chr*_*ian 6 c# wpf eventtrigger routedevents

我有自己的形状类

public sealed class MirrorTile : Shape
Run Code Online (Sandbox Code Playgroud)

在这堂课中我添加了这个活动

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

并希望以这种方式使用它

<shapes:MirrorTile>
    <shapes:MirrorTile.Triggers>
        <EventTrigger RoutedEvent="SelectedEnter">
            <BeginStoryboard Storyboard="{StaticResource SelectShape}"/>
        </EventTrigger>
    </shapes:MirrorTile.Triggers>
</shapes:MirrorTile>
Run Code Online (Sandbox Code Playgroud)

在starup之后我得到了例外: {"RoutedEventConverter cannot convert from System.String."}

我做错了什么,我该如何解决这个问题呢?

Chr*_*ian 7

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

命名空间也丢失了.


l46*_*kok 6

您还必须提供类型:

<EventTrigger RoutedEvent="MirrorTile.SelectedEnter"></EventTrigger>
Run Code Online (Sandbox Code Playgroud)

编辑评论:

您是否尝试过为XAML声明添加命名空间?

 xmlns:local="clr-namespace:YourNameSpace"
Run Code Online (Sandbox Code Playgroud)

然后修复此问题:

 <EventTrigger RoutedEvent="local:MirrorTile.SelectedEnter"></EventTrigger>
Run Code Online (Sandbox Code Playgroud)