1

私は現在、次の問題に少し悩まされています。私は基本的にグラフィックを表示するユーザーインターフェイスを持っています(線、円で作られたキャンバス...これらはすべてWPFオブジェクトです)。ユーザーがメニューで行った選択に応じて、一部の項目が削除され、一部の項目が追加されます。したがって、基本的なイメージは同じに見えますが、いくつかの変更が加えられています。

ユーザーは、[次へ/前へ] ボタンをクリックして、たとえば 10 個の異なる「ページ」を選択できます。

私は MVVM Light を使用しており、ViewModel にはグラフィックのすべての項目 (すべての行など) が含まれています。

今、そのグラフィックを複数のページに印刷したいと思います。最初のページには、ページ 1 からの変更を含むグラフィックを含める必要があります。2 ページ目には、ページ 2 からの変更を含むグラフィックを含める必要があります。実際のページ数は動的です。プロパティ CurrentPage とプロパティ PagesTotal でこれを追跡します。「次へ」ボタンを押すたびに、変数 CurrentPage を変更するコマンドが実行され、正しい項目が表示されるようになります。

今、これを印刷したいのですが、ここで行き詰まっています。MVVM ゾーンを離れてコード ビハインドで汚い作業を行うことは気にしませんが、古い GDI 時代のようにすべてを再度描画することは拒否します。

どんなアイデアでも大歓迎です。

4

3 に答える 3

2

表示ロジック(たとえば、グラフィック)を含むUserControlを作成します。ViewModelリストを取得し、UserControlsでプロジェクトを作成し、各ViewModelを各UserControlのDataContextとして設定します。それぞれに、呼び出し元のMeasureを無限の値でレンダリングしてから、結果のDesiredHeightとWidthを配置します。次に、手順に従ってWPFビジュアルを印刷します(リンク リンク リンク)。

于 2013-03-01T17:19:46.707 に答える
1

基本的に、ビューが独立して機能する場合に限り、これは非常に単純なはずです。つまり、ViewModel には、View に配置される UiElements が含まれていません。

簡単な解決策は、基本的にビジュアルルートを印刷することです。必要に応じて、ビューを最初にユーザー コントロールにカプセル化します。

PrintDialog printDlg = new PrintDialog();
UserControl1 uc = new UserControl1();
printDlg.PrintVisual(uc, "User Control Printing."); 

参照

于 2013-03-01T19:24:54.183 に答える
-1

さて、コードのみで印刷を行うことに戻ったことを管理する必要があります。「WPFスタイル」でやりたかったのですが、複数ページの問題を処理するのは面倒でした。

とにかく、印刷に関してまだ 1 つの問題が残っていますが、これは別の質問になります。

于 2013-03-05T15:00:24.173 に答える