private static void FindAndRegisterViewportToRouterService(Dispatcher dispatcher, DependencyObject d) { var service = WalkAncestorsForRouterService(d); if (service == null) { RoutingComponentsHelperLogHelper.LogRouterServiceNotFoundMessage(); dispatcher.DelayInvoke( DelayBetweenAncestorsWalks, () => FindAndRegisterViewportToRouterService(dispatcher, d)); } else { RoutingComponentsHelperLogHelper.LogRouterServiceFoundMessage(service); RegisterViewportWithService(service, d as FrameworkElement); } }
private static void RegisterViewportWithService(RouterService service, FrameworkElement control) { var viewportName = RoutingComponent.GetViewportName(control); var viewportAdapterOption = ControlViewportAdapterFactory.GetControlViewportAdapter(control); viewportAdapterOption.Match( some: viewportAdapter => { RoutingComponentsHelperLogHelper.LogRegisteringViewportMessage(service, control, viewportName); service.RegisterViewport(viewportName, viewportAdapter); RoutingComponentsHelperLogHelper.LogViewportRegisteredMessage(service, control, viewportName); }, none: () => { RoutingComponentsHelperLogHelper.LogViewportAdapterNotFoundMessage(service, control); }); }