Иногда при проектировании WPF приложений возникает необходимость отображения таблиц разной конфигурации для формирования отчётов и отображения данных. Cтандартными средствами Visual Studio добиться нужного результата не всегда представляется возможным.
Можно добавить объекты на форму программным способом, непосредственно в коде программы в процессе исполнения.
Плюс данного метода – это использование минимального набора ПО. Но при построении большой таблицы он займёт слишком много времени. Так же потребуется реализация доступа к таблицам с данными и формирование циклов выборки. А при дальнейшем изменении структуры придётся перестраивать всё заново.
Другой способ получить красивую нестандартную таблицу – использование FastReport.NET.
Открываем дизайнер отчета, создаём источник данных и добавляем объекты: заголовок отчёта, заголовок страницы, данные, подвал страницы и другие при желании. Формируем отчёт и сохраняем его в формате XAML. Для этого жмём кнопку «Предварительный просмотр»(Ctrl+P), далее «сохранить» и выбираем пункт «Файл XAML». Созданный шаблон отчета можно сохранить для последующего использования.
Можно встроить FastReport.NET в создаваемую программу. В ходе работы настраиваем таблицу в редакторе или программно, экспортируем в файл и загружаем сразу в WPF. Код экспорта представлен ниже:
// prepare a report report1.Prepare(); // create an instance of XAML export filter FastReport.Export.XAML.XAMLExport export = new FastReport.Export.XAML.XAMLExport(); // export in xaml report1.Export(export, "result.xaml");
После экспорта сразу можно произвести загрузку. Для этого используем код:
// Создание потока для чтения выбранного XAML файла using (FileStream fs = new FileStream(filename, FileMode.Open)) { // Создание нового окна для графического вывода содержимого XAML файла ((Window)XamlReader.Load(fs)).Show(); }
Где filename – название созданного файла с таблицей.
Вместо FileStream можно использовать MemoryStream, тогда XAML можно передать без использования файлов.
Так можно построить таблицу динамически прямо в коде программы. Это позволяет генерировать таблицу на сервере, а на клиенте получать XAML файл и отображать его на форме. Так же FastReport избавляет от написания кода доступа к базе - вся работа делается им, и не требует вмешательства.
Из вышесказанного видно, что использование FastReport.NET значительно упрощает задачу и сокращает время разработки, избавляет от трудностей с выборкой данных из базы, облегчает изменение структуры таблицы.