【问题标题】:Custom RoutedEvent as EventTrigger将 RoutedEvent 自定义为 EventTrigger
【发布时间】:2013-02-25 13:48:33
【问题描述】:

我有自己的形状类

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 cannot convert from System.String."}

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

【问题讨论】:

    标签: c# wpf eventtrigger routedevents


    【解决方案1】:

    &lt;EventTrigger RoutedEvent="shapes:MirrorTile.SelectedLeave"&gt;

    命名空间也丢失了。

    【讨论】:

    • @McGarnagle:你确定第二个冒号吗?当我用一个点替换它时,我的 VS 停止告诉我有错误。
    • namespace:ClassName.EventName
    【解决方案2】:

    您还必须提供类型:

    <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'."}
    【解决方案3】:

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

    <EventTrigger RoutedEvent="MirrorTile.SelectedEnter">
    

    【讨论】:

    • 我试过了,但我也遇到了异常{"Type reference cannot find type named '{http://schemas.microsoft.com/winfx/2006/xaml/presentation}MirrorTile'."}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    相关资源
    最近更新 更多