0

アプリケーションのさまざまな画面を表示するためのメインのContentControlを備えたPOSシステムを構築しています。DataTemplatesを使用して、ビューモデルをビューにマップします。ContentControlに表示されているさまざまなビュー間を移動するには、UserControlがアンロードされたとき(またはContentControlが変更されたとき)に、UserControlのスクリーンショットをビューモデルに保存したいと思います。

ここに関連する質問を投稿しました。WPFBindingFrameworkElementイベントをコマンド にバインドしました。コマンドをFrameworkElement.Unloadedにバインドしようとしましたが、機能しません(そのリンクの回答を参照してください)。

これはMVVMパターンを壊すことなく可能ですか?

4

1 に答える 1

1

これは、wpfでスクリーンショットを作成する方法への優れたリンクです。

これが私がすることです:

ナビゲーションを処理する私のmainviewmodelは、新しいcontentviewmodelを設定する前に、イベントを公開し、このイベントを発生させる必要があります。古いcontentviewmodelはeventargsにあるはずです。メインウィンドウのコードビハインドで、イベントをサブスクライブします(ここでmvvmを壊さないでください)。このイベントが発生するたびに、screenshotメソッドを呼び出して、結果をoldviewmodelに入れることができます。

編集:

メインウィンドウのコードビハインド

void NavigationChangingEvent(object sender, NavChangingArgs args)
{
   var oldvm = args.ChangingViewmodel;
   oldvm.Screenshoot = this.mycontentcontrolwheremyviewmodelareshown.GetJpgImage(1, 90);
}
于 2012-07-12T13:24:28.780 に答える