web-dev-qa-db-ja.com

WPFでのMSReportViewerの使用

ReportViewerをWindowsFormsHostに配置して、WPFアプリケーションでMSReportViewerの使用を開始しようとしています。

これは正しいアプローチですか? WindowsFormsHostの設計時にReportViewerを使用できないため、レポートを設計するための最良の方法は何ですか。

SQL ServerでRDLレポートを作成してからRDLCに変換するのが最善ですか、それとも新しいWinformsアプリを作成してWinFormsフレームワークでRDLCファイルを作成してからWPFアプリにコピーするのが最善ですか。

ドロップダウンを使用してレポートをフィルタリングする必要があるため、その側面も考慮する必要があります。誰かがすでにWPFでReportViewerを使用している場合は、最善のアプローチに関するフィードバックをいただければ幸いです。

31
Mitch

WindowsFormsHostを使用するだけで、間違いなく成功しました。私はRDLCファイル自体の作成には関与していませんが、(あなたが言うように)WinFormsプロジェクトで設計され、コピーされたと思います。

ローカルレポートが必要ない場合は、WPFフレームコントロールを使用して、サーバーベースのレポートのURLを指定できます(Webブラウザーのようにレンダリングされます)。これは私たちにとっても本当にうまくいきます。

23
Matt Hamilton

はい、それは機能します。私はwpfプロジェクトでWindowsFormsHostを使用してReportViewerをラップしています。

ViewModelで、WindowsFormsHostとReportViewerを作成しています。

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

ビューでは、WindowsFormsHostを保持するプロパティにバインドすることにより、ContentPresenterを使用して表示しています。

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

レポートの作成には、Business Intelligence Studio(レポートを編集するためのテンプレートを備えたVisual Studio 2008)を使用しています。 http://msdn.Microsoft.com/en-us/library/ms173767.aspx

気を付けて、
マーティン

25
mdk

同じアプリケーションでWPF-WindowsとWindows-Form-Windowsの両方を使用できることに注意してください。

したがって、ShowDialogを使用してWPFウィンドウから開く別のWindowsフォームウィンドウにReportViewerを配置すると、WindowsFormsHostの使用を回避できます。

その後、設計時にもReportViewerを使用できます。

2
csname1910