3
votes

Here is my problem. I have a WPF datagrid and I am binding the .ItemsSource to a linq query IEnumerable result. This works great. When I run the program the data is loaded correctly in the datagrid. My problem is too much data is displayed. (IE users don't need to see ID fields, etc). What I am attempting to do is after I bind to the .ItemsSource, I want to hide a few columns. I have found the .Visibility and attempting to set it, but the columns object is empty. After the binding I have tried the following methods: .Items.Refresh() and .UpdateLayout().

My question is what method do I need to call to refresh the columns after I set the .ItemsSource?

3

3 Answers

0
votes

Why not explicitly setup your DataGrid? http://www.wpftutorial.net/DataGrid.html -- This will help you be able to setup your DataGrid manually instead of having it use AutoGenerated columns.

2
votes

A different solution could be changing your linq query. Simply select the columns you wish to display, like so:

dataGrid.ItemsSource = myquery.Select(x => new { Name = x.Name, Age = x.Age });
0
votes

If you want to use the .Visibility of DataGrid column, do it after loading of data in the DataGrid. DataGrid is not getting loaded just after the binding of ItemSource; that's why you are getting empty column objects.

Hope this will work for you.