Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 104 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,107 @@
# How to define summary rows using AttachedProperty in WPF and UWP DataGrid (SfDataGrid)?
# How to Define Summary Rows using AttachedProperty in WPF / UWP DataGrid?

This example illustrates how to define summary rows using AttachedProperty in [WPF DataGrid](https://www.syncfusion.com/wpf-ui-controls/datagrid) (SfDataGrid).
This example illustrates how to define summary rows using [AttachedProperty](https://learn.microsoft.com/en-us/dotnet/desktop/wpf/properties/attached-properties-overview) in [WPF DataGrid](https://www.syncfusion.com/wpf-ui-controls/datagrid) and [UWP DataGrid](https://www.syncfusion.com/uwp-ui-controls/datagrid) (SfDataGrid).

[WPF DataGrid](https://www.syncfusion.com/wpf-ui-controls/datagrid) (SfDataGrid) provides support to show the column summary. If the DataContext of SfDataGrid is ViewModel, you can bind [SummaryColumns](http://help.syncfusion.com/cr/cref_files/wpf/Syncfusion.SfGrid.WPF~Syncfusion.UI.Xaml.Grid.GridSummaryRow~SummaryColumns.html) to a property in ViewModel using the [AttachedProperty](https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/attached-properties-overview) of type List<GridSummaryColumn>.
DataGrid provides support to show the column summary. If the DataContext of DataGrid is ViewModel, you can bind [SummaryColumns](https://help.syncfusion.com/cr/wpf/Syncfusion.UI.Xaml.Grid.GridSummaryRow.html#Syncfusion_UI_Xaml_Grid_GridSummaryRow_SummaryColumns) to a property in ViewModel using the AttachedProperty of type List &lt;GridSummaryColumn&gt;.

KB article - [How to define summary rows using AttachedProperty in WPF and UWP DataGrid (SfDataGrid)](https://www.syncfusion.com/kb/9838/how-to-define-summary-rows-using-attached-property-in-wpf-datagrid-sfdatagrid)
Refer to the following code example to define the AttachedProperty of type List &lt;GridSummaryColumn&gt;.

#### C#

``` csharp
public class SfDataGridAttachedProperty
{
public static readonly DependencyProperty DynamicSummaryColumnsProperty = DependencyProperty.RegisterAttached("DynamicSummaryColumns",
typeof(List<GridSummaryColumn>),
typeof(SfDataGridAttachedProperty)
, new FrameworkPropertyMetadata(null, OnDynamicSummaryColumnsChanged));

public static void SetDynamicSummaryColumns(UIElement element, List<GridSummaryColumn> value)
{
element.SetValue(DynamicSummaryColumnsProperty, value);
}
public static List<GridSummaryColumn> GetDynamicSummaryColumns(UIElement element)
{
return (List<GridSummaryColumn>)element.GetValue(DynamicSummaryColumnsProperty);
}

private static void OnDynamicSummaryColumnsChanged(DependencyObject d, DependencyPropertyChangedEventArgs args)
{
SfDataGrid grid = d as SfDataGrid;

if (grid.TableSummaryRows.Count() > 1)
{
grid.TableSummaryRows.Clear();
}

GridTableSummaryRow gsr = new GridTableSummaryRow();
gsr.ShowSummaryInRow = false;

var list = ((List<GridSummaryColumn>)args.NewValue);

foreach (var item in list)
{
gsr.SummaryColumns.Add(item);
}

grid.TableSummaryRows.Add(gsr);
}
}
```

Refer to the following code example to populate GridSummaryColumn in Viewmodel.

#### C#

``` csharp
internal class ViewModel : INotifyPropertyChanged
{
private List<GridSummaryColumn> _summarycols;

public List<GridSummaryColumn> SummaryColumns
{
get { return _summarycols; }
set
{
_summarycols = value;
RaisePropertyChanged("SummaryColumns");
}
}

public ViewModel()
{
PopulateEmployeeDetails();
SetSummaryColumns();
}

private void SetSummaryColumns()
{
SummaryColumns = new List<GridSummaryColumn>();
SummaryColumns.Add(new GridSummaryColumn()
{
MappingName = "EmployeeID",
Name = "EmployeeID",
SummaryType = SummaryType.CountAggregate,
Format = "Total: {Count}"
});
SummaryColumns.Add(new GridSummaryColumn()
{
MappingName = "EmployeeSalary",
Name = "EmployeeSalary",
SummaryType = SummaryType.DoubleAggregate,
Format = "Total: {Sum}"
});
}
}
```

Refer to the following code example to bind the attached property in DataGrid.

#### XAML

``` xml
<Syncfusion:SfDataGrid x:Name="sfdatagrid"
local:SfDataGridAttachedProperty.DynamicSummaryColumns="{Binding SummaryColumns}"
ItemsSource="{Binding EmployeeDetails}">
</Syncfusion:SfDataGrid>
```