質問
ReportViewerをWindowsFormsHostに配置することにより、WPFアプリケーションでMS ReportViewerの使用を開始しようとしています。
これは正しいアプローチですか? WindowsFormsHostで設計時にReportViewerを使用できないため、レポートを設計する最良の方法は何ですか。
RDLレポートをSQL Serverで作成してからRDLCに変換するか、新しいWinformsアプリを作成してWinFormsフレームワークでRDLCファイルを作成し、WPFアプリにコピーするのが最善です。
ドロップダウンを介してレポートをフィルタリングする必要があるので、考慮すべき側面もあります。すでにWPFでReportViewerを使用している人がいれば、最良のアプローチについてのフィードバックをお願いします。
解決
WindowsFormsHostを使用するだけで間違いなく成功しました。 RDLCファイル自体の作成には関与していませんが、WinFormsプロジェクトで(おっしゃるように)設計され、コピーされたと思います。
ローカルレポートが不要な場合は、WPFフレームコントロールを使用して、サーバーベースのレポートのURLをポイントすることができます(Webブラウザーのようにレンダリングします)。これは私たちにとっても非常に有効です。
他のヒント
はい、うまくいきます。wpfプロジェクトでWindowsFormsHostを使用してReportViewerをラップしています。
ViewModelで、WindowsFormsHostとReportViewerを作成しています:
WindowsFormsHost windowsFormsHost = new WindowsFormsHost();
reportViewer = new ReportViewer();
windowsFormsHost.Child = reportViewer;
this.Viewer = windowsFormsHost
およびビューで、私はContentFormsenterを使用して、WindowsFormsHostを保持するプロパティにバインドすることにより、それを表示しています。
<ContentPresenter Content="{Binding Viewer}" ...
レポート作成には、Business Intelligence Studio(レポート編集用のテンプレートを備えたVisual Studio 2008)を使用しています。 http://msdn.microsoft.com/en-us/library/ms173767.aspx
注意してください、
マーティン
同じアプリケーションでWPF-WindowsとWindows-Form-Windowsの両方を使用できることに注意してください。
したがって、ShowDialogを使用してWPFウィンドウから開く別のWindowsフォームウィンドウにReportViewerを配置すると、WindowsFormsHostの使用を回避できます。
その後、デザインタイムでもReportViewerを使用できます。