Ho compilato automaticamente un DataGrid da un DataTable da un server SQL. Voglio che l'utente sia in grado di aggiungere o rimuovere quali colonne sono visibili. Originariamente ho provato questo:Come nascondere colonne generate automaticamente in DataGrid?
public void populateTaskTable(DataTable dt)
{
//add the whole datatable to the datagrid
dg.DataContext = dt.DefaultView;
dg.Columns[0].Visibility = Visibility.Collapsed;
}
per un corrispondente XAML (ho provato sia con che senza la AutoGenerateColumns="True"
<DataGrid Name="dg" ItemsSource="{Binding}" AutoGenerateColumns="True"
<!-- <DataGrid.Columns></DataGrid.Columns> -->
</DataGrid>
che ha provocato una rottura violazione della memoria Così poi ho fatto
MessageBox.Show(dg.Columns.Count());
.
per vedere se le colonne sono state compilate, il che non era, ha emesso un 0
anche se potevo vedere le colonne nel programma
Ho scoperto from this previous stackoverflow question che "le colonne generate automaticamente non vengono aggiunte all'indice delle colonne".
Poi from this question ho provato ad aggiornare il DataGrid per ottenere colonne popolato in questo modo
taskTable.UpdateLayout();
e
taskTable.Items.Refresh();
Il che non ha fatto nulla.
C'è un modo per accedere alle proprietà di un DataGrid generato automaticamente o un modo per aggiungere tutte le colonne di DataGrid al componente Columns
?
Grazie in anticipo.
Ho aggiornato la mia risposta, la risposta collegata è sbagliata. Si collega a msdn docs per Web non Wpf. Ho lasciato un commento sotto quella risposta per i futuri lettori. –