private IHelpTextProvider FindHelpTextProvider(DependencyObject child) { IHelpTextProvider htp = WpfUtils.FindVisualParents <ButtonBase>(child) .Where(n => n.Command is IHelpTextProvider) .Where(n => (n.Command as IHelpTextProvider).Help != null) .Select(n => n.Command as IHelpTextProvider).FirstOrDefault(); if (htp == null) { htp = WpfUtils.FindVisualParents <MenuItem>(child) .Where(n => n.Command is IHelpTextProvider) .Where(n => (n.Command as IHelpTextProvider).Help != null) .Select(n => n.Command as IHelpTextProvider).FirstOrDefault(); } if (htp == null) { htp = WpfUtils.FindVisualParents <FrameworkElement>(child) .Where(n => n.DataContext is IHelpTextProvider) .Where(n => (n.DataContext as IHelpTextProvider).Help != null) .Select(n => n.DataContext as IHelpTextProvider).FirstOrDefault(); } return(htp); }
private void OnHelpTextProvider(IHelpTextProvider htp) { if (!Object.ReferenceEquals(htp, helpTextProvider)) { helpTextProvider = htp; if (Object.ReferenceEquals(dispatcherTimer, null)) { dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 100); dispatcherTimer.Tick += new EventHandler(OnTimer); dispatcherTimer.Start(); } } }