У меня проблема с WPF DataGrid. Я пытаюсь удалить datagrid, добавлять столбцы и заполнять его данными из базы данных, а не скрывать 1 столбец, который является идентификатором, который пользователю не нужно видеть.Скрытие столбцов в коде, сгенерированном WPF DataGrid
Но когда я пытаюсь, он говорит, что DataGrid columnsCount равен 0, даже после добавления всего в конце метода. Я даже попытался скрыть его другим методом после первого, но все же той же ошибки. Так что мой трюк, чтобы сделать это очень грязно, и я хочу узнать, как это сделать лучше.
это мой простой код вставки столбцов и т.д., чтобы DataGrid:
private void insertSubjects()
{
DataSet dataSet = DBConnect.Instance.getSubjects();
DataTable subjects = new DataTable();
subjects.Columns.Add("id", typeof(int));
subjects.Columns.Add("Przedmiot", typeof(string));
foreach(DataTable table in dataSet.Tables)
{
foreach(DataRow row in table.Rows)
{
subjects.Rows.Add(row["id"], row["name"]);
}
}
subjectsTable.ItemsSource = subjects.DefaultView;
new Thread(new ThreadStart(hideColumns)).Start();
}
Моя фиксирующее здесь новый поток, метод, выполнить еще одну, потому что мне нужно сделать это Dispatcher.Invoke, который выглядит как выполнение это:
private void hideColumns()
{
while (subjectsTable.Columns.Count == 0)
{ }
this.Dispatcher.Invoke(hideColumns2);
}
private void hideColumns2()
{
subjectsTable.Columns[0].Visibility = Visibility.Hidden;
}
Проблема заключается в том, когда я был на 1 странице или окна, 2 других DataGrids, и если я хочу, чтобы скрыть столбцы в них обоих, я должен был заполнить их в одном методе.
Я попытался найти ответ для этого, но я потерпел неудачу и исправил свой путь.
Удалите все это и используйте надлежащие XAML и DataBinding. –
@HighCore с дозой MVVM, заброшенной для хорошей меры, я полагаю? –
@ DavidL Это именно то, что я сказал. XAML + DataBinding == MVVM. –