2009-05-07 5 views
29

Je suis sur le point de commencer à utiliser MS ReportViewer dans une application WPF en plaçant le ReportViewer dans un WindowsFormsHost.Utilisation de MS ReportViewer dans WPF

Est-ce la bonne approche? Quelle est la meilleure façon de concevoir les rapports que vous ne pouvez pas utiliser le ReportViewer au moment du design dans un WindowsFormsHost. Il est préférable de créer un rapport RDL dans SQL Server, puis de le convertir en RDLC ou de créer une nouvelle application Winforms pour créer un fichier RDLC dans un framework WinForms, puis de le copier dans l'application WPF.

Je devrai filtrer les rapports via des listes déroulantes, donc il y a cet aspect à considérer aussi. Si quelqu'un utilise déjà ReportViewer dans WPF, j'apprécierais quelques commentaires sur la meilleure approche ..... Merci beaucoup.

Répondre

22

Nous avons certainement eu du succès en utilisant WindowsFormsHost. Je n'ai pas été impliqué dans la création des fichiers RDLC eux-mêmes, mais je crois qu'ils ont été conçus (comme vous le dites) dans un projet WinForms et copiés ensuite. Notez que si vous n'avez pas besoin de rapports locaux, vous pouvez utiliser un contrôle Frame WPF et le pointer sur l'URL du rapport basé sur le serveur (il le rend comme un navigateur Web). Cela fonctionne très bien pour nous aussi.

+0

Merci pour les commentaires Matt, c'est bon de savoir que je me dirigeais dans la bonne direction. – Mitch

+0

Cela fonctionne plutôt bien, mais rappelez-vous que vous ne pouvez pas ajouter l'attribut AllowsTransparency = "True" dans la balise xaml Window. Si vous le dites, WindowsFormsHost disparaît. –

26

Oui, cela fonctionne, j'utilise WindowsFormsHost dans un projet wpf pour envelopper le ReportViewer.

Dans le ViewModel je crée le WindowsFormsHost et ReportViewer:

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

et dans la vue, je me sers d'un ContentPresenter pour l'afficher, en se liant à la propriété qui détient le WindowsFormsHost. Nous utilisons Business Intelligence Studio (qui est un Visual Studio 2008 avec des modèles pour l'édition de rapports) pour la création de rapports. http://msdn.microsoft.com/en-us/library/ms173767.aspx

Prenez soin,
Martin

+1

J'ai dû définir une hauteur pour windowsFormsHost, sinon, je n'ai pas vu le reportViewer. –

2

S'il vous plaît noter que vous pouvez utiliser à la fois WPF Windows et Windows Form Windows dans la même application. Vous pouvez donc éviter d'utiliser WindowsFormsHost si vous placez ReportViewer dans une fenêtre Windows Forms séparée que vous ouvrez à partir de votre fenêtre WPF avec ShowDialog.

Ensuite, vous pouvez également utiliser ReportViewer au moment du design.

Questions connexes