Подтвердить что ты не робот

Использование MS ReportViewer в WPF

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

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

Позаботьтесь,
Мартин

Ответ 3

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

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

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