// SERVER EVENTS private void AddServerButton_Click(object sender, RoutedEventArgs e) { if (!AddServerButtonImage.Source.ToString().Contains("0")) { Server server = new Server(); serverList.Add(server); gameList.Find(x => x.Name == gamesListComboBox.Text).Regions.Find(x => x.Name == regionsListComboBox.Text).Servers.Add(server); // Ensure newly added item is visible ServersDataGrid.ScrollIntoView(server); // Force the UI thread to update changes to the datagrids itemsource RefreshUIControl(ServersDataGrid); // Select the new item and ensure server buttons are correct ServersDataGrid.SelectedItem = server; DeleteServerButton.Visibility = Visibility.Visible; AddServerButton.Visibility = Visibility.Hidden; // Start the edit process on the first cell of the newly formed object ServersDataGrid.CurrentCell = new DataGridCellInfo(server, ServersDataGrid.Columns[0]); ServersDataGrid.BeginEdit(); } }
// Used for losing focus of non-control areas of the grid window, and ending datagrid edits if needed private void ClearDataGridSelection(object sender, EventArgs e) { if (ServersDataGrid.SelectedItem != null) { isCancelledByGridClick = true; ServersDataGrid.CommitEdit(); isCancelledByGridClick = false; ServersDataGrid.UnselectAll(); } ClearFocus(sender, e); }
private void ServersDataGrid_PreviewKeyDown(object sender, KeyEventArgs e) { // By handling the keydown event by default, this will prevent the datagrid tabbing to a new row if (e.Key == Key.Tab || e.Key == Key.Enter) { DataGrid dg = sender as DataGrid; if (dg.CurrentColumn.Header.ToString() == "Name") { ServersDataGrid.CommitEdit(); } else { e.Handled = true; ServersDataGrid.CommitEdit(); } } }
private void ServersDataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { TextBox cellTextBox = e.EditingElement as TextBox; // If a cell is left empty after editing, cancel the cell edit to refute the change if (cellTextBox.Text == "" && !isCancelledByGridClick) { // Cancel the edit by invoking a new edit on the current cell (sender as DataGrid).Dispatcher.BeginInvoke((Action)(() => { Server server = (Server)e.Row.Item; ServersDataGrid.CurrentCell = new DataGridCellInfo(server, e.Column); ServersDataGrid.BeginEdit(); cellTextBox.BorderBrush = new SolidColorBrush(Colors.DarkRed); })); // TODO: Change the specific cell border to red and/or display a tooltip with error text "Cell cannot be empty" } }
public DataGridRow GetRow(int index) { DataGridRow row = (DataGridRow)ServersDataGrid.ItemContainerGenerator.ContainerFromIndex(index); if (row == null) { ServersDataGrid.UpdateLayout(); ServersDataGrid.ScrollIntoView(ServersDataGrid.Items[index]); row = (DataGridRow)ServersDataGrid.ItemContainerGenerator.ContainerFromIndex(index); } return row; }