private void CreateAdorner() { if (_adorner != null) { return; } if (AssociatedObject == null) { return; } var adornerLayer = AdornerLayer.GetAdornerLayer(this.AssociatedObject); if (adornerLayer == null) { return; } _adorner = new BorderAdorner(this.AssociatedObject); _adorner.Visibility = Visibility.Collapsed; adornerLayer.Add(_adorner); }
public static void GoBabyGo() { crWindow = new ClickyRecordingWindow(); crWindow.Show(); Application.Current.MainWindow.AddHandler(UIElement.PreviewMouseDownEvent, new MouseButtonEventHandler((o, e) => { if (TutorialManager.CurrentTutorial == null) { FrameworkElement element = e.OriginalSource as FrameworkElement; if (element != null) { //Label l = new Label() { Content = PathToString(GenerateTypePath(GetNearestLogicalParent(element))) }; //Label l = new Label() { Content = PathToString(GenerateTypePath(element)) }; //DockPanel.SetDock(l, Dock.Top); ((ClickyRecordingViewModel)crWindow.DataContext).RecordedClicks.Add(new Step(GenerateTypePath(element))); } } }), true); Application.Current.MainWindow.AddHandler(UIElement.PreviewMouseMoveEvent, new MouseEventHandler((o, e) => { if (TutorialManager.CurrentTutorial == null) { FrameworkElement element = e.OriginalSource as FrameworkElement; if (element != null) { //element = GetNearestLogicalParent(element); if (element != adornedElement) { if (adornedElement != null) { AdornerLayer oldElementLayer = AdornerLayer.GetAdornerLayer(adornedElement); if (oldElementLayer != null) { Adorner[] toRemoveArray = oldElementLayer.GetAdorners(adornedElement); if (toRemoveArray != null) { foreach (Adorner a in toRemoveArray) { if (a is BorderAdorner) { oldElementLayer.Remove(a); } } } } } AdornerLayer layer = AdornerLayer.GetAdornerLayer(element); if (layer != null) { BorderAdorner ba = new BorderAdorner(element); ba.IsHitTestVisible = false; layer.Add(ba); } adornedElement = element; } } } }), true); }