Статус:
Offline
Реєстрація: 14.06.2007
Повідом.: 13581
Реєстрація: 14.06.2007
Повідом.: 13581
WPF и XPS - как произвести преобразование XAML в XPS?
Переезжаем потихоньку с винформса на WPF и 4 фреймворк Изучаю новые (или для кого-то старые ) технологии
Судя по обзорам технологий, было бы неплохо заюзать XPS формат.
Собственно нужно формирование отчетов в PDF, но решения XPS->PDF вроде как есть. Поэтому будем считать это вторым шагом.
Вопрос в том как бы поудобнее XPS файлы генерить. Очень понравился binding в XAML, хотелось бы организовать чтото наподобие XAML+binding на MVVM->XPS.
Однако гугление на тему генерации XAML->XPS дало достаточно скудные результаты. Собственно примитивную генерацию XPS сделать получилось с ходу, но... есть проблема - отчет получается без разбивки на страницы, т.к. юзаю FixedDocument. Задача в том что нужно формировать XPS, который автоматом на несколько страниц генерится, в зависимости от кол-ва строк в таблицах и т.п.
Я формирую XPS файл так:
Все работает очень удобно - шаблон отчета можно в дизайнере студии набивать, но проблема - все на одной странице, что не влезло, то не влезло. Как сформировать FixedDocument с разбивкой на страницы?
Крутил FlowDocument, но дизайнер VS2010 не понимает такой XAML
Таким образом нужно дерево UIElement'ов преобразовать в XPS. Как это сделать?
Переезжаем потихоньку с винформса на WPF и 4 фреймворк Изучаю новые (или для кого-то старые ) технологии
Судя по обзорам технологий, было бы неплохо заюзать XPS формат.
Собственно нужно формирование отчетов в PDF, но решения XPS->PDF вроде как есть. Поэтому будем считать это вторым шагом.
Вопрос в том как бы поудобнее XPS файлы генерить. Очень понравился binding в XAML, хотелось бы организовать чтото наподобие XAML+binding на MVVM->XPS.
Однако гугление на тему генерации XAML->XPS дало достаточно скудные результаты. Собственно примитивную генерацию XPS сделать получилось с ходу, но... есть проблема - отчет получается без разбивки на страницы, т.к. юзаю FixedDocument. Задача в том что нужно формировать XPS, который автоматом на несколько страниц генерится, в зависимости от кол-ва строк в таблицах и т.п.
Я формирую XPS файл так:
Код:
PageReport pageReport = new PageReport(); // XAML с объектом Page в качестве рута
pageReport.DataContext=dataContext;
UIElement content = (UIElement)pageReport.Content;
pageReport.Content = null;
((Grid)content).Width = pageReport.Width;
((Grid)content).Height = pageReport.Height;
FixedPage fixedPage = new FixedPage();
fixedPage.Children.Add(content);
PageContent pageContent = new PageContent();
((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
FixedDocument fixedDoc = new FixedDocument();
fixedDoc.Pages.Add(pageContent);
return fixedDoc;
Все работает очень удобно - шаблон отчета можно в дизайнере студии набивать, но проблема - все на одной странице, что не влезло, то не влезло. Как сформировать FixedDocument с разбивкой на страницы?
Крутил FlowDocument, но дизайнер VS2010 не понимает такой XAML
Таким образом нужно дерево UIElement'ов преобразовать в XPS. Как это сделать?