Я автоматически заполнил DataGrid из DataTable с SQL-сервера. Я хочу, чтобы пользователь мог добавлять или удалять, какие столбцы видны. Первоначально я попытался это:Как спрятать автоматически созданные столбцы в DataGrid?
public void populateTaskTable(DataTable dt)
{
//add the whole datatable to the datagrid
dg.DataContext = dt.DefaultView;
dg.Columns[0].Visibility = Visibility.Collapsed;
}
Для соответствующего XAML (я попытался с и без AutoGenerateColumns="True"
<DataGrid Name="dg" ItemsSource="{Binding}" AutoGenerateColumns="True"
<!-- <DataGrid.Columns></DataGrid.Columns> -->
</DataGrid>
что привело к нарушению памяти перерыва Затем я сделал
MessageBox.Show(dg.Columns.Count());
.
, чтобы увидеть, были ли заполнены столбцы, чего не было, он выводит 0
, хотя я мог видеть столбцы в программе.
Я обнаружил from this previous stackoverflow question, что «автоматически создаваемые столбцы не добавляются в индекс столбцов».
Затем from this question я попытался обновить DataGrid, чтобы получить столбцы заселена как так
taskTable.UpdateLayout();
и
taskTable.Items.Refresh();
Который ничего не делает.
Есть ли способ получить доступ к свойствам автоматически созданного DataGrid или добавить все столбцы DataGrid к компоненту Columns
?
Заранее спасибо.
Я обновил свой ответ, связанный ответ неверен. Он ссылается на документы msdn для Web not Wpf. Я оставил комментарий ниже этого ответа для будущих читателей. –