Wpf 自定义路由事件失败!

Wpf 自定义路由事件失败!,wpf,routedevent,Wpf,Routedevent,我的应用程序如下所示: 1 Window 2 Frame 3 Page 4 Control public static readonly RoutedEvent PreviewArtistLinkClickedEvent = EventManager.RegisterRoutedEvent( "PreviewArtistLinkClicked", RoutingStrategy.Tunnel, typeof(RoutedEventHandler), typ

我的应用程序如下所示:

1 Window
  2 Frame
    3 Page  
      4 Control
public static readonly RoutedEvent PreviewArtistLinkClickedEvent = EventManager.RegisterRoutedEvent(
     "PreviewArtistLinkClicked", RoutingStrategy.Tunnel, typeof(RoutedEventHandler), typeof(TrackList));
在控件4中,我有一个自定义路由事件,我希望帧2处理该事件

活动:

    public static readonly RoutedEvent PreviewArtistLinkClickedEvent = EventManager.RegisterRoutedEvent(
         "PreviewArtistLinkClicked", RoutingStrategy.Tunnel, typeof(RoutedEventHandler), typeof(Hyperlink));


    public event RoutedEventHandler PreviewAlbumLinkClicked {
        add { AddHandler(PreviewAlbumLinkClickedEvent, value); }
        remove { RemoveHandler(PreviewAlbumLinkClickedEvent, value); }
    }

    void RaisePreviewArtistLinkClickedEvent(object sender, RoutedEventArgs e) {
        RoutedEventArgs eventArgs = new RoutedEventArgs(Tracklist.PreviewArtistLinkClickedEvent);
        RaiseEvent(eventArgs);
    }
以及框架XAML:

            <Frame Name="frameContent" Grid.Column="1" Background="#373737"  NavigationUIVisibility="Hidden"
               gui:Tracklist.PreviewArtistLinkClicked="frameContent_PreviewArtistLinkClicked"/>
编译很好,但会发生以下情况:

找不到名为“PreviewArtistLinkClicked”的属性的DependencyProperty或PropertyInfo

查看PreviewIstLinkClickedEvent的所有者类型,在您的案例中它是超链接,据我从您的代码中了解,在这种情况下,所有者类型应该是TrackList 因此,您的代码将如下所示:

1 Window
  2 Frame
    3 Page  
      4 Control
public static readonly RoutedEvent PreviewArtistLinkClickedEvent = EventManager.RegisterRoutedEvent(
     "PreviewArtistLinkClicked", RoutingStrategy.Tunnel, typeof(RoutedEventHandler), typeof(TrackList));
希望这有帮助