我有一个生成多个 DataGrid 的 WPF 程序。我添加了使用此站点上的想法将每个网格导出到 Excel 的功能:http: //www.codeproject.com/Articles/120480/Export-to-Excel-Functionality-in-WPF-DataGrid
目前我在每个网格下都有一个按钮,它有自己的处理程序,看起来像这样:
private void m_btnExportTimePartitionToExcel_Click(object sender, RoutedEventArgs e)
{
try
{
ExportToExcel<SystemTimeRecordData, List<SystemTimeRecordData>> s = new ExportToExcel<SystemTimeRecordData, List<SystemTimeRecordData>>();
ICollectionView view = CollectionViewSource.GetDefaultView(m_gridPartitionSystemTimeRecords.ItemsSource);
s.dataToPrint = (List<SystemTimeRecordData>)view.SourceCollection;
s.GenerateReport();
}
catch (Exception ex)
{
MessageBox.Show("Problem with exporting Excel. Error: " + ex.Message);
}
}
我对每个网格都有一个类似的按钮处理程序。这一切都有效,但它“闻起来”。似乎应该有一种方法可以让每个按钮调用一个处理程序。也就是说,如果我可以传递与该按钮关联的网格以及相关的类。我可以从 XAML 中做到这一点吗?我已经搜索并看到了传递参数的示例,但不是网格本身,当然也不是类,我猜它必须作为类型传递?用类似的东西替换上面的代码会很好......
private void m_btnExportTimePartitionToExcel_Click(object sender, RoutedEventArgs e)
{
try
{
// some how get Type type, and grid from sender and/or e
ExportToExcel<type, List<type>> s = new ExportToExcel<type, List<type>>();
ICollectionView view = CollectionViewSource.GetDefaultView(m_grid.ItemsSource);
s.dataToPrint = (List<type>)view.SourceCollection;
s.GenerateReport();
}
catch (Exception ex)
{
MessageBox.Show("Problem with exporting Excel. Error: " + ex.Message);
}
}
然后我可以只有一个按钮处理程序!有任何想法吗?谢谢,戴夫