2009-05-07 22 views
29

私は、ReportViewerをWindowsFormsHostに配置することで、WPFアプリケーションでMS ReportViewerを使用しようとしています。WPFでMS ReportViewerを使用する

これは正しい方法ですか? WindowsFormsHostでデザイン時にReportViewerを使用できないため、レポートを設計する最適な方法は何ですか。

RDLレポートをSQL Serverで作成し、RDLCに変換するか、WinFormsフレームワークでRDLCファイルを作成してWPFアプリケーションにコピーするための新しいWinformsアプリケーションを作成することをお勧めします。

レポートをドロップダウンでフィルタリングする必要がありますので、考慮すべき点もあります。 WPFで既にReportViewerを使用しているユーザーがいる場合は、最善の方法についてフィードバックをいただければ幸いです。

答えて

22

WindowsFormsHostを使用して成功したことは間違いありません。私はRDLCファイルの作成には関与していませんが、WinFormsプロジェクトで設計されていて、それをコピーしたと思います。

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

+0

フィードバックのおかげで、Matt、私は正しい方向に向かっていたことを知ってよかったです。 – Mitch

+0

これはかなりうまくいきますが、xaml WindowタグにAllowsTransparency = "True"属性を追加できないことに注意してください。それを当てはめると、WindowsFormsHostが消えます。 –

26

はい、それは、私は、ReportViewerをラップするwpfプロジェクトでWindowsFormsHostを使用しています。 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


マーティンを注意してください

+1

windowsFormsHostの高さを定義する必要がありました。それ以外の場合、reportViewerが表示されませんでした。 –

2

あなたが同じアプリケーションでWPF-WindowsおよびWindowsフォーム-Windowsの両方を使用できることに注意してください。

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

次に、デザイン時にもReportViewerを使用できます。

関連する問題