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);
        }
        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);
        }