在WPF中使用MS ReportViewer

时间:2009-05-07 23:59:01

标签: wpf reportviewer

我将把ReportViewer放在WindowsFormsHost中,开始在WPF应用程序中使用MS ReportView。

这是正确的做法吗?设计报告的最佳方法是什么,因为您无法在WindowsFormsHost中设计时使用ReportViewer。

最好在SQL Server中创建RDL报告,然后将其转换为RDLC,或者创建新的Winforms应用程序以在WinForms框架中创建RDLC文件,然后将其复制到WPF应用程序。

我需要通过下拉菜单过滤报告,因此也需要考虑这个方面。如果有人已经在WPF中使用ReportViewer,我会很感激对最佳方法的一些反馈.....非常感谢。

3 个答案:

答案 0 :(得分:25)

是的,这很有效,我在wpf项目中使用WindowsFormsHost包装ReportViewer。

在ViewModel中,我正在创建WindowsFormsHost和ReportViewer:

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

并在视图中我使用ContentPresenter来显示它,通过绑定到包含WindowsFormsHost的Property。

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

我们正在使用Business Intelligence Studio(带有用于编辑报表的模板的Visual Studio 2008)来创建报表。 http://msdn.microsoft.com/en-us/library/ms173767.aspx

小心,
马丁

答案 1 :(得分:23)

我们肯定只使用WindowsFormsHost取得了成功。我自己没有参与创建RDLC文件,但我相信它们是在WinForms项目中设计的(如你所说),然后被复制。

请注意,如果您不需要本地报告,则可以使用WPF Frame控件并将其指向基于服务器的报告的URL(它将其呈现为Web浏览器)。这对我们来说也很有效。

答案 2 :(得分:2)

请注意,您可以在同一应用程序中同时使用WPF-Windows和Windows-Form-Windows。

因此,如果将ReportViewer放在使用ShowDialog从WPF窗口打开的单独Windows窗体窗口中,则可以避免使用WindowsFormsHost。

然后您也可以在设计时使用ReportViewer。