private void BindSocketPopup(ItemDisplayViewModel vm) { UIElement socket = null; bool isKeyPressed = false; Action DisplaySocket = () => { if (socket == null) { socket = vm.GetSocket(this.IsQuadStash); } if (!MainGrid.Children.Contains(socket)) { MainGrid.Children.Add(socket); } }; MainGrid.MouseEnter += (o, ev) => { DisplaySocket(); }; MainGrid.MouseLeave += (o, ev) => { if (!isKeyPressed) { MainGrid.Children.Remove(socket); } }; MainWindow mainWindow = Application.Current.Windows.OfType <MainWindow>().FirstOrDefault(); mainWindow.KeyDown += (o, ev) => { if ((ev.SystemKey == Key.LeftAlt) || (ev.SystemKey == Key.RightAlt)) { isKeyPressed = true; DisplaySocket(); } }; mainWindow.KeyUp += (o, ev) => { if (((Keyboard.GetKeyStates(Key.LeftAlt) == KeyStates.None) || (Keyboard.GetKeyStates(Key.LeftAlt) == KeyStates.Toggled)) && ((Keyboard.GetKeyStates(Key.RightAlt) == KeyStates.None) || (Keyboard.GetKeyStates(Key.RightAlt) == KeyStates.Toggled))) { isKeyPressed = false; if (!MainGrid.IsMouseOver) { MainGrid.Children.Remove(socket); } } }; }
private void BindSocketPopup(ItemDisplayViewModel vm) { UIElement socket = null; MainGrid.MouseEnter += (o, ev) => { if (socket == null) { socket = vm.GetSocket(); } if (!MainGrid.Children.Contains(socket)) { MainGrid.Children.Add(socket); } }; MainGrid.MouseLeave += (o, ev) => MainGrid.Children.Remove(socket); }