自定义RoutedEvent作为EventTrigger

8

我有自己的形状类

public sealed class MirrorTile : Shape

在这个类中,我添加了事件。

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);
    }
}

并希望以这种方式使用它

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

启动后我遇到了异常:

{"RoutedEventConverter 无法从 System.String 进行转换。"}

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

3个回答

10

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

命名空间也缺失了。


@McGarnagle:你确定第二个冒号吗?当我用点替换它时,我的VS停止告诉我有错误。 - christoph
1
namespace:ClassName.EventName - McGarnagle

7

您还需要提供类型:

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

评论后的编辑:

你尝试在XAML声明中添加命名空间了吗?

 xmlns:local="clr-namespace:YourNameSpace"

然后将其修复为:
 <EventTrigger RoutedEvent="local:MirrorTile.SelectedEnter"></EventTrigger>

我尝试了这个,但是我得到了一个异常:{"Type reference cannot find type named '{http://schemas.microsoft.com/winfx/2006/xaml/presentation}MirrorTile'."} - Christian

2

我认为您缺少定义事件的类型:

<EventTrigger RoutedEvent="MirrorTile.SelectedEnter">

我尝试了这个,但是我遇到了一个异常,也就是{"Type reference cannot find type named '{http://schemas.microsoft.com/winfx/2006/xaml/presentation}MirrorTile'."} - Christian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接