Динамическая генерация таблиц в 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 .NET Visual Studio Visual Studio FastReport FastReport WPF WPF
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.
20 апреля 2026

Подробный обзор возможностей библиотеки FastGrid

Обзор библиотеки FastGrid для VCL и Lazarus: визуализация, редактирование и структурирование данных. Сортировка, фильтрация, группировка, удобные редакторы данных — всё в одной статье!
17 апреля 2026

Новая система валидации отчетов в FastReport VCL

В этой статье мы расскажем, как работает проверка отчетов в FastReport VCL, как её настроить, как писать собственные правила на примерах и поделимся интересными нововведениями.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»