アプリケーションにMVVMパターンを実装する方法を理解しようとして問題が発生しました。これは小さなアプリケーションであり、その機能について説明します。
私のアプリケーションはファイルのバックアップを作成します。UIを使用すると、ユーザーはバックアップするフォルダーとバックアップ先を選択できます。選択した後、「開始」ボタンをクリックします。
次に、フォルダーのソースと宛先をクラスライブラリ(backup.csと呼ばれます)に渡します。クラスライブラリは、各フォルダー内のすべてのファイルのバックアップを作成します。この間に、ログ(Log.cs)が作成され、各ステージと、バックアップを試みた各ファイルの状態(完了、失敗、その他など)が記録されます。現在、ログはメモリのみにあります。
バックアップが完了したら、すべてのログを表示するウィンドウ(ビュー)を開きます。この時点では、MVVMパターンの使用方法を理解できません。
現在のところ、ログ(データを階層的に保持している)をMainWindowのコンストラクターに渡し、xamlのツリービューを使用してデータコンテキストにバインドし、目的の結果を取得します。ただし、MVVMを使用したいと思います。
私の質問は前の質問と非常によく似ています。答えは、ログをパラメーターとしてViewModelコンストラクターに渡すことです。問題は、その方法がわからず、ウィンドウを表示することです。
(私の頭の中で)これを達成できる唯一の方法は、ログをパラメーターとしてビューのコンストラクターに渡すことですが、これはMVVMのポイントを打ち負かします。パラメータをViewModelのコンストラクター(MVVMパターンに適合する)に渡すことはできますが、それは、ViewModelコンストラクターからもViewのインスタンスを作成する必要があることを意味しますか?それ以外の場合は、ViewModelを作成するだけですが、ビューが表示されないため、結果を表示する方法がありません。
私が苦労しているところをはっきりと説明できたと思いますが、誰かが前進する方法を提案できますか?