2009-05-07 2 views
29

Sto per iniziare a utilizzare MS ReportViewer in un'applicazione WPF posizionando ReportViewer in WindowsFormsHost.Utilizzo di MS ReportViewer in WPF

È questo l'approccio corretto? Qual è il modo migliore di progettare i report poiché non è possibile utilizzare ReportViewer in fase di progettazione in WindowsFormsHost.

È consigliabile creare un report RDL in SQL Server e quindi convertirlo in un RDLC o magari creare una nuova app Winform per creare un file RDLC in un framework WinForms e quindi copiarlo nell'app WPF.

Devo filtrare i report tramite elenchi a discesa, quindi è necessario prendere in considerazione anche questo aspetto. Se qualcuno là fuori sta già utilizzando ReportViewer in WPF, apprezzerei il feedback sull'approccio migliore ... Mille grazie.

risposta

22

Abbiamo sicuramente avuto successo usando WindowsFormsHost. Non sono stato coinvolto nella creazione dei file RDLC, ma credo che siano stati progettati (come dici tu) in un progetto WinForms e quindi copiati.

Si noti che se non sono necessari report locali è possibile utilizzare un controllo Frame WPF e puntarlo sull'URL del report basato sul server (lo renderà come farebbe un browser Web). Funziona davvero bene anche per noi.

+0

Grazie per il feedback Matt, è bello sapere che stavo andando nella direzione corretta. – Mitch

+0

Funziona piuttosto bene, ma ricorda che non puoi aggiungere l'attributo AllowsTransparency = "True" nel tag Xaml Window. Se lo metti vero, WindowsFormsHost scomparirà. –

26

Sì, funziona, sto utilizzando WindowsFormsHost in un progetto wpf per includere il ReportViewer.

Nel ViewModel sto creando il WindowsFormsHost e il ReportViewer:

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

e nella vista che sto usando un ContentPresenter per visualizzarla, legandosi alla proprietà che contiene il WindowsFormsHost.

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

stiamo usando la Business Intelligence Studio (che è un Visual Studio 2008 con i modelli per i rapporti di editing) per la creazione di report. http://msdn.microsoft.com/en-us/library/ms173767.aspx

Prendersi cura,
Martin

+1

Ho dovuto definire un'altezza per windowsFormsHost, altrimenti, non ho visto il reportViewer. –

2

prega di notare che è possibile utilizzare sia WPF-Windows e Windows-Form-Windows nella stessa applicazione.

Quindi è possibile evitare l'uso di WindowsFormsHost se si inserisce ReportViewer in una finestra Windows Form separata che viene aperta da WPF-Window con ShowDialog.

Quindi è possibile utilizzare ReportViewer anche in fase di progettazione.