private void doSocketOnHover(UIElement socket, Image i) { NonTopMostPopup popup = new NonTopMostPopup(); popup.PopupAnimation = PopupAnimation.None; popup.StaysOpen = true; popup.Child = socket; popup.Placement = PlacementMode.Center; popup.PlacementTarget = i; popup.AllowsTransparency = true; i.MouseEnter += (o, ev) => { closeOthersButNot(popup); popup.IsOpen = true; }; i.MouseLeave += (o, ev) => { Rect rect = System.Windows.Media.VisualTreeHelper.GetDescendantBounds(i); if (!rect.Contains(ev.GetPosition(o as IInputElement))) { popup.IsOpen = false; } }; this.MainGrid.Children.Add(popup); annoyed.Add(popup); }
private void doSocketOnHover(UIElement socket, Image i) { NonTopMostPopup popup = new NonTopMostPopup(); popup.PopupAnimation = PopupAnimation.Fade; popup.StaysOpen = true; popup.Child = socket; popup.Placement = PlacementMode.Center; popup.PlacementTarget = i; popup.AllowsTransparency = true; i.MouseEnter += (o, ev) => { closeOthersButNot(popup); popup.IsOpen = true; }; i.MouseLeave += (o, ev) => { Rect rect = System.Windows.Media.VisualTreeHelper.GetDescendantBounds(i); if (!rect.Contains(ev.GetPosition(o as IInputElement))) popup.IsOpen = false; }; this.MainGrid.Children.Add(popup); annoyed.Add(popup); }