2009-05-07 18 views
29

Ich bin dabei, den MS ReportViewer in einer WPF-Anwendung zu verwenden, indem ich den ReportViewer in einen WindowsFormsHost platziere.MS ReportViewer in WPF verwenden

Ist dies der richtige Ansatz? Wie können Sie die Berichte am besten gestalten, da Sie den ReportViewer nicht zur Entwurfszeit in einem WindowsFormsHost verwenden können?

Ist es am besten, einen RDL-Bericht in SQL Server zu erstellen und dann in einen RDLC zu konvertieren oder eine neue Winforms-App zu erstellen, um eine RDLC-Datei in einem WinForms-Framework zu erstellen und in die WPF-App zu kopieren.

Ich muss die Berichte über Dropdowns filtern, so gibt es diesen Aspekt auch zu berücksichtigen. Wenn irgendjemand da draußen bereits ReportViewer in WPF benutzt, würde ich mich über Feedback zur besten Vorgehensweise freuen ... Vielen Dank.

Antwort

22

Wir hatten definitiv Erfolg mit dem WindowsFormsHost. Ich war nicht daran beteiligt, die RDLC-Dateien selbst zu erstellen, aber ich glaube, sie wurden (wie Sie sagen) in einem WinForms-Projekt entworfen und dann kopiert.

Beachten Sie, dass Sie, wenn Sie keine lokalen Berichte benötigen, ein WPF-Frame-Steuerelement verwenden und auf die URL des serverbasierten Berichts verweisen können (es wird wie ein Webbrowser dargestellt). Das funktioniert auch für uns sehr gut.

+0

Danke für die Rückmeldung Matt, es ist gut zu wissen, dass ich in die richtige Richtung ging. – Mitch

+0

Es funktioniert ziemlich gut, aber denken Sie daran, dass Sie nicht das Attribut AllowsTransparency = "True" in Xaml Window-Tag hinzufügen können. Wenn Sie es wahr geben, verschwindet WindowsFormsHost. –

26

Ja, das funktioniert, ich benutze die WindowsFormsHost in einem WPF-Projekt, um den ReportViewer zu wickeln.

Im Viewmodel mir den Windows und den Report erstellen:

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

und in der Ansicht ich ein Content verwenden, um sie anzuzeigen, indem zum Immobil Bindung, die die Windows hält.

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

Wir verwenden das Business Intelligence Studio (ein Visual Studio 2008 mit Vorlagen zum Bearbeiten von Berichten) für die Berichterstellung. http://msdn.microsoft.com/en-us/library/ms173767.aspx

Achten Sie darauf,
Martin

+1

Ich musste eine Höhe für windowsFormsHost definieren, sonst habe ich den ReportViewer nicht gesehen. –

2

Bitte beachten Sie, dass Sie sowohl WPF-Windows und Windows-Form-Fenster in der gleichen Anwendung verwenden können.

Sie können also vermeiden, WindowsFormsHost zu verwenden, wenn Sie den ReportViewer in einem separaten Windows-Forms-Fenster, das Sie von Ihrem WPF-Fenster mit ShowDialog öffnen.

Dann können Sie den ReportViewer auch zur Entwurfszeit verwenden.