我将把ReportViewer放在WindowsFormsHost中,开始在WPF应用程序中使用MS ReportView。
这是正确的做法吗?设计报告的最佳方法是什么,因为您无法在WindowsFormsHost中设计时使用ReportViewer。
最好在SQL Server中创建RDL报告,然后将其转换为RDLC,或者创建新的Winforms应用程序以在WinForms框架中创建RDLC文件,然后将其复制到WPF应用程序。
我需要通过下拉菜单过滤报告,因此也需要考虑这个方面。如果有人已经在WPF中使用ReportViewer,我会很感激对最佳方法的一些反馈.....非常感谢。
答案 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。