Динамическая генерация таблиц в XAML

25.10.2013

Иногда при проектировании WPF приложений возникает необходимость отображения таблиц разной конфигурации для формирования отчётов и отображения данных. Cтандартными средствами Visual Studio добиться нужного результата не всегда представляется возможным.

XAML Report

Можно добавить объекты на форму программным способом, непосредственно в коде программы в процессе исполнения.

Плюс данного метода – это использование минимального набора ПО. Но при построении большой таблицы он займёт слишком много времени. Так же потребуется реализация доступа к таблицам с данными и формирование циклов выборки. А при дальнейшем изменении структуры придётся перестраивать всё заново.

Другой способ получить красивую нестандартную таблицу – использование 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 значительно упрощает задачу и сокращает время разработки, избавляет от трудностей с выборкой данных из базы, облегчает изменение структуры таблицы.

.NET Visual Studio FastReport WPF .NET Visual Studio FastReport WPF
3 июня 2025

Как импортозаместить генерацию документов в крупных компаниях: обзор продукта «МоиОтчеты Корпоративный Сервер»

В обзоре расскажем, как МоиОтчеты Корпоративный Сервер справляется с задачами крупного бизнеса и государственных предприятий в области автоматизированной генерации отчетов и документов.
30 мая 2025

Открываем файлы с расширением FP3 с помощью МоиОтчеты Вьювер

МоиОтчеты Вьювер — идеальное решение для работы с файлами FP3. Он позволяет легко открывать, просматривать, печатать и экспортировать отчёты.
21 апреля 2025

Работа с компонентом TfrShellTreeView в FastReport VCL

В данной статье мы рассмотрим компонент TfrShellTreeView. Он предназначен для отображения элементов файловой системы и частично является аналогом компонентов TDirectoryListBox, TDirectoryOutline и TShellTreeView.