/// <summary>
        /// Called when the group summary property is changed.
        /// </summary>
        /// <param name="dependencyObject">The dependency object.</param>
        /// <param name="e">The <see cref="DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
        private static void OnGroupSummaryPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
        {
            DataGrid dataGrid = (DataGrid)dependencyObject;
            DataGridGroupSummaryCollection groupSummary = GetGroupSummary(dataGrid);

            DataGridGroupSummaryCollection groupSummaryInternal = new DataGridGroupSummaryCollection();

            foreach (DataGridColumn dataGridColumn in dataGrid.Columns)
            {
                DataGridGroupSummary item = groupSummary.FirstOrDefault(x => x.Column == dataGridColumn);
                if (item == null)
                {
                    groupSummaryInternal.Add(
                        new DataGridGroupSummary()
                        {
                            Column = dataGridColumn,
                            Template = new DataTemplate()
                        });
                }
                else
                {
                    groupSummaryInternal.Add(
                        new DataGridGroupSummary()
                        {
                            Column = dataGridColumn,
                            Template = item.Template
                        });
                }
            }

            SetGroupSummaryInternal(dataGrid, groupSummaryInternal);
        }
 /// <summary>
 /// Sets the internal group summary representing all columns.
 /// </summary>
 /// <param name="dataGrid">The data grid.</param>
 /// <param name="value">The value.</param>
 private static void SetGroupSummaryInternal(DataGrid dataGrid, DataGridGroupSummaryCollection value)
 {
     dataGrid.SetValue(GroupSummaryInternalPropertyKey, value);
 }
 /// <summary>
 /// Sets the group summary items.
 /// </summary>
 /// <param name="dataGrid">The data grid.</param>
 /// <param name="value">The value.</param>
 public static void SetGroupSummary(DataGrid dataGrid, DataGridGroupSummaryCollection value)
 {
     dataGrid.SetValue(GroupSummaryProperty, value);
 }