private void MainWindow_MouseDown(object sender, MouseButtonEventArgs e) { Point position = Mouse.GetPosition(fieldView); // Check if mouse inside field view if (position.X < 0 || position.X > fieldViewWidth || position.Y < 0 || position.Y > fieldViewHeight) { return; } // Check if mouse not over visible settings panel if (settingsPanel.Visibility == Visibility.Visible) { Point panelpos = Mouse.GetPosition(settingsPanel); if (panelpos.X >= 0 && panelpos.X <= settingsPanel.ActualWidth || panelpos.Y >= 0 && panelpos.Y <= settingsPanel.ActualHeight) { return; } } // Check if mouse not over visible drawing panel if (drawingPanel.Visibility == Visibility.Visible) { Point panelpos = Mouse.GetPosition(drawingPanel); if (panelpos.X >= 0 && panelpos.X <= drawingPanel.ActualWidth || panelpos.Y >= 0 && panelpos.Y <= drawingPanel.ActualHeight) { return; } } // Do magic double cellSize = fieldViewWidth / fieldViewResolution; lifeGame.SwitchCell(new XY(MouseXtoCellX(position.X, cellSize), MouseYtoCellY(position.Y, cellSize))); DrawLifeField(); }