代码场景为一个自定义控件里面有个浏览器,将浏览器加载完成事件传到自定义控件CusNavigated事件中
/// <summary>
/// 导航完成事件
/// </summary>
public static readonly RoutedEvent NavigatedEvent = EventManager.RegisterRoutedEvent("CusNavigated", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CefWebBrowserUC));
/// <summary>
/// 处理路由事件的方法
/// </summary>
public event RoutedEventHandler CusNavigated
{
//将路由事件添加路由事件处理程序
add { AddHandler(NavigatedEvent, value); }
//从路由事件处理程序中移除路由事件
remove { RemoveHandler(NavigatedEvent, value); }
}
/// <summary>
/// 导航完成路由事件
/// </summary>
/// <param name="param"></param>
private void RoutedNavigatedEvent()
{
RoutedEventArgs args = new RoutedEventArgs(NavigatedEvent, this);
RaiseEvent(args);
}
/// <summary>
/// 页面加载完成
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CefBrowser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
//往自定义控件事件传
CefBrowser.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() =>
{
RoutedNavigatedEvent();
}));
}