private void TablesComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { var selectedItem = TablesComboBox.SelectedItem as ComboBoxItem; RailwaysEntities context = RailwaysData.sharedContext; string tableName = selectedItem.Tag as string; if (tableName != null) { curTableName = tableName; editingType = context.GetType().GetProperty(tableName).PropertyType.GetGenericArguments()[0]; dynamic query = context.GetType().GetProperty(tableName).GetValue(context, null); DataTab.ItemsSource = null; object collection = TypesConverter.CreateGenericList(editingType); MethodInfo mListAdd = collection.GetType().GetMethod("Add"); foreach (dynamic q in query) { mListAdd.Invoke(collection, new object[] { q }); } DataTab.ItemsSource = (IEnumerable)collection; DataTab.DataContext = context.GetType().GetProperty(tableName).GetValue(context, null); int numberOfDomains = RailwaysDBQueries.GetNumberOfDomainsInTable(tableName); for (int i = DataTab.Columns.Count - 1; i >= numberOfDomains; --i) { DataTab.Columns.RemoveAt(i); } columnsOriginalHeaders.Clear(); foreach (DataGridColumn column in DataTab.Columns) { column.IsReadOnly = curTableName == "TICKETS" || curTableName == "LOGTABLE" || curTableName == "LOGGINGACTIONS" || (column.Header as string) == "ID"; columnsOriginalHeaders.Add((string)column.Header); column.Header = TypesConverter.GetResource(curTableName + "_" + (column.Header as string)); } if (curTableName != "LOGTABLE" && curTableName != "LOGGINGACTIONS") { LoggingManager.LogAction(3, curTableName); } } }