Использование MS ReportViewer в WPF - PullRequest
31 голосов
/ 08 мая 2009

Я собираюсь начать использовать MS ReportViewer в приложении WPF, поместив ReportViewer в WindowsFormsHost.

Это правильный подход? Каков лучший способ создания отчетов, поскольку вы не можете использовать ReportViewer во время разработки в WindowsFormsHost.

Лучше всего создать отчет RDL в SQL Server, а затем преобразовать его в RDLC или, возможно, создать новое приложение Winforms, чтобы создать файл RDLC в платформе WinForms и затем скопировать его в приложение WPF.

Мне нужно будет отфильтровать отчеты по выпадающим спискам, так что этот аспект тоже необходимо учитывать. Если кто-то уже использует ReportViewer в WPF, я был бы признателен за отзывы о наилучшем подходе ..... Большое спасибо.

Ответы [ 3 ]

25 голосов
/ 18 февраля 2010

Да, это работает, я использую WindowsFormsHost в проекте wpf, чтобы обернуть ReportViewer.

В ViewModel я создаю WindowsFormsHost и ReportViewer:

WindowsFormsHost windowsFormsHost = new WindowsFormsHost();
reportViewer = new ReportViewer();
windowsFormsHost.Child = reportViewer;
this.Viewer = windowsFormsHost

и в представлении я использую ContentPresenter для его отображения, привязав его к свойству, которое содержит WindowsFormsHost.

 <ContentPresenter Content="{Binding Viewer}" ...

Мы используем Business Intelligence Studio (Visual Studio 2008 с шаблонами для редактирования отчетов) для создания отчетов. http://msdn.microsoft.com/en-us/library/ms173767.aspx

Береги себя,
Martin

23 голосов
/ 08 мая 2009

Мы определенно добились успеха, просто используя WindowsFormsHost. Я не участвовал в создании самих файлов RDLC, но я считаю, что они были разработаны (как вы говорите) в проекте WinForms, а затем скопированы.

Обратите внимание, что если вам не нужны локальные отчеты, вы можете использовать элемент управления WPF Frame и указать его на URL-адрес отчета на сервере (он отображается так, как это делает веб-браузер). Это очень хорошо работает и для нас.

2 голосов
/ 16 декабря 2014

Обратите внимание, что вы можете использовать как WPF-Windows, так и Windows-Form-Windows в одном приложении.

Таким образом, вы можете избежать использования WindowsFormsHost, если поместите ReportViewer в отдельное окно Windows-Forms, которое вы открываете из окна WPF с помощью ShowDialog.

Затем вы можете использовать ReportViewer также во время разработки.

...