private void Tile_Click(object sender, RoutedEventArgs e) { if (!(sender is VisualChessTile)) { throw new ArgumentException(); } var tile = sender as VisualChessTile; if (SelectedTile == null && tile.Piece != null) { SelectTile(tile); } else if (SelectedTile != null && MoveDictionary.ContainsKey(tile)) { ExecuteMove(tile); } else if (SelectedTile != null) { SelectedTile.Deselect(); SelectedTile = null; foreach (var t in MoveDictionary.Keys) { t.Deselect(); } MoveDictionary.Clear(); } }