2009-05-07 18 views
29

Estoy a punto de comenzar a utilizar MS ReportViewer en una aplicación WPF colocando ReportViewer en WindowsFormsHost.Uso de MS ReportViewer en WPF

¿Es este el enfoque correcto? ¿Cuál es la mejor forma de diseñar los informes ya que no puede usar ReportViewer en el momento del diseño en WindowsFormsHost?

Es mejor crear un informe RDL en SQL Server y luego convertirlo a un RDLC o tal vez crear una nueva aplicación Winforms para crear un archivo RDLC en un framework WinForms y luego copiarlo a la aplicación WPF.

Tendré que filtrar los informes mediante listas desplegables por lo que también hay que considerar ese aspecto. Si alguien por ahí ya está utilizando ReportViewer en WPF, agradecería algunos comentarios sobre el mejor enfoque ... Muchas gracias.

Respuesta

22

Definitivamente hemos tenido éxito usando WindowsFormsHost. No participé en la creación de los archivos RDLC, pero creo que fueron diseñados (como usted dice) en un proyecto de WinForms y luego se copiaron.

Tenga en cuenta que si no necesita informes locales, puede usar un control de marco WPF y señalarlo en la URL del informe basado en el servidor (lo hace como si fuera un navegador web). Esto también funciona muy bien para nosotros.

+0

Gracias por los comentarios Matt, es bueno saber que iba en la dirección correcta. – Mitch

+0

Funciona bastante bien, pero recuerde que no puede agregar el atributo AllowsTransparency = "True" en la etiqueta xaml Window. Si lo dice cierto, WindowsFormsHost desaparece. –

26

Sí, eso funciona, estoy usando WindowsFormsHost en un proyecto de wpf para ajustar el ReportViewer.

En el modelo de vista que estoy creando el WindowsFormsHost y el ReportViewer:

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

y en la vista estoy usando un ContentPresenter para mostrar que, mediante la unión a la propiedad que tiene el WindowsFormsHost.

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

estamos usando la Inteligencia Estudio de negocios (que es un Visual Studio 2008 con plantillas para la edición de informes) para la creación de informes. http://msdn.microsoft.com/en-us/library/ms173767.aspx

Tenga cuidado,
Martin

+1

Tuve que definir una altura para windowsFormsHost, de lo contrario, no vi el reportViewer. –

2

Tenga en cuenta que se puede utilizar tanto en WPF en Windows y Windows Form de Windows en la misma aplicación.

Así que puede evitar el uso de WindowsFormsHost si coloca el ReportViewer en una ventana de Windows-Forms separada que abre desde su WPF-Window con ShowDialog.

Luego puede usar ReportViewer también en el momento del diseño.