Public Module StatisticsUtility Public Sub ExportToExcelAndCsv(dgDataGrid As DataGrid, StatisticsVM As StatisticsVM) ' imposto gli header For Each DataGridColumn In dgDataGrid.Columns If IsNothing(DataGridColumn) OrElse IsNothing(DataGridColumn.HeaderTemplate) Then Continue For ' recupero il contenuto del HeaderTemplate Dim DataGridColumnHeaderFE As FrameworkElement = DataGridColumn.HeaderTemplate.LoadContent() ' recupero la stringa di binding Dim DataGridColumnHeaderBindingText = DataGridColumnHeaderFE.GetBindingExpression(TextBlock.TextProperty).ParentBinding.Path.Path() ' applico la stessa proprieta' del binding Select Case DataGridColumnHeaderBindingText Case "DataContext.PDN_Msg" DataGridColumn.Header = StatisticsVM.PDN_Msg Case "DataContext.ID_Msg" DataGridColumn.Header = StatisticsVM.ID_Msg Case "DataContext.W_Msg" DataGridColumn.Header = StatisticsVM.W_Msg Case "DataContext.H_Msg" DataGridColumn.Header = StatisticsVM.H_Msg Case "DataContext.L_Msg" DataGridColumn.Header = StatisticsVM.L_Msg Case "DataContext.NAM_Msg" DataGridColumn.Header = StatisticsVM.NAM_Msg Case "DataContext.MAT_Msg" DataGridColumn.Header = StatisticsVM.MAT_Msg Case "DataContext.CNT_Msg" DataGridColumn.Header = StatisticsVM.CNT_Msg Case "DataContext.ADDED_Msg" DataGridColumn.Header = StatisticsVM.ADDED_Msg Case "DataContext.INPROD_Msg" DataGridColumn.Header = StatisticsVM.INPROD_Msg Case "DataContext.DONE_Msg" DataGridColumn.Header = StatisticsVM.DONE_Msg Case "DataContext.Used_Msg" DataGridColumn.Header = StatisticsVM.Used_Msg Case "DataContext.Waste_Msg" DataGridColumn.Header = StatisticsVM.Waste_Msg Case "DataContext.UNIT_VOLUME_Msg" DataGridColumn.Header = StatisticsVM.UNIT_VOLUME_Msg Case "DataContext.TOT_VOLUME_Msg" DataGridColumn.Header = StatisticsVM.TOT_VOLUME_Msg Case "DataContext.UNIT_TIME_Msg" DataGridColumn.Header = StatisticsVM.UNIT_TIME_Msg Case "DataContext.TOT_TIME_Msg" DataGridColumn.Header = StatisticsVM.TOT_TIME_Msg End Select Next dgDataGrid.SelectAllCells() dgDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader Try ApplicationCommands.Copy.Execute(Nothing, dgDataGrid) Catch ex As Exception Map.refMyStatusBarVM.SetOutputMessage("Copy to clipboard impossible", 3, EgtWPFLib5.MSG_TYPE.INFO) End Try Map.refMyStatusBarVM.SetOutputMessage("Copied to clipboard", 3, EgtWPFLib5.MSG_TYPE.INFO) dgDataGrid.UnselectAllCells() End Sub End Module