В WPF у вас есть много возможностей:
- Печать через XPS, смотрите здесь для получения дополнительной информации. Это действительно гибкий и мощный, но и немного сложный. Здесь вы найдете короткий пример.
- Создайте FlowDocument и распечатайте его. Этот способ более прост, имеет множество функций, а также обеспечивает хорошее качество печати. Однако у него есть конкретная цель: поддержка текущих документов. Поэтому это не всегда лучший выбор из-за ограничений форматирования.
- Очень простая возможность использования PrintDialog.PrintVisual . При этом вы можете быстро распечатать содержимое визуального. Это хорошо для простого решения, но очень ограничено.
- Используйте инструмент отчетности, такой как Microsoft Report Viewer . Вы также можете использовать его из WPF, и он очень мощный и бесплатный. Будьте осторожны, есть много разных версий. Я бы использовал самый новый (V3). Это версия VS2010 имеет встроенный конструктор.
Все эти способы можно использовать для распечатки без прямого взаимодействия с пользователем.
Вы написали: Я не знаю, как это сделать в WPF, я попытался создать пользовательский элемент управления и передать необходимые объекты и связать его с элементом управления DataGrid в этот пользовательский элемент управления и распечатать его. . Чтобы увидеть, как получается результат, возьмите PrintDialog.PrintVisual-метод, кажется, у вас также есть все, что вам нужно, и тогда вы увидите, соответствует ли он вашим потребностям. В противном случае выберите одну из других технологий.
Для создания форматированных печатных документов я бы предложил использовать технологию отчетности из-за гибкости, которую они предоставляют. Вы можете сделать это также в XPS, но в целом, это гораздо более трудоемко (чем сложнее становится макет) и также менее поддерживаемо. Однако это также попытка изучить и внедрить технологию отчетности в ваше приложение.