I have a grid with multiple columns and users can sort based on any column. Data, which is bound the grid is a collection of custom entity. I have a print button on the scre
You have to use the yourDataGrid.Items, Items reflect the currentview of the grid. and you have to convert using the method Cast and after use .ToList();
imagine this
List<MyClass> myListOfMyClass = new List<MyClass>();
myGrid.ItemSource = myListOfMyClass;
List<MyClass> myListOfMyClassSortedByTheUser = myGrid.Items.Cast<MyClass>().ToList();
Yes, there is. In WPF, always a CollectionView
is bound, never the collection itself. If you don't specify a collection view yourself, a default one is used. You can access this default collection view like this:
CollectionViewSource.GetDefaultView(yourCollectionOfCustomEntities);
This is the collection view as shown by the grid with all the sorting and filtering applied.
You can also just enumerate the Items property of your DataGrid. Unlike the ItemsSource property, the Items property appears to reflect exactly what's on the screen including sorting and filtering. For example:
foreach (var item in dataGrid.Items)
{
// do something
}