質問
WPFアプリケーションをMVVMで開発しています。
アプリケーションの仕様としてバックグラウンドスレッド(Model)で常に動いている処理があるのですが、
その処理が MainWindow の ViewModel に対して処理を行いたい場合、ViewModel の実装はどのようにすればいいのでしょうか?
以前質問したコードを例とすると
バックグラウンドスレッドでprivate void Button_Click()
と同じ処理をしたい場合
MVVM では Model は ViewModel を知らないという解釈なので、Model に ViewModel のインスタンスを渡したりすることは禁じ手なのかなと考えています。
そのため解決するとしたら
- ViewModel(
public class MainViewModel
) を Model としてそのまま実装する - ViewModel を Model として実装するが MainWindow と Model がバインドすることになるので、Model をラップした ViewModel を新たに実装する
- ViewModel の private 変数のみ(
private ObservableCollection<string> listVal
など)を Model として実装し、処理は private 変数に対して行う
上記が考えられるのですがどのようにするのがMVVMとしては相応しいのでしょうか?
個人的には今のところは最後の案がベストなのかなと考えているのですが、
private 変数の更新を ViewModel がどのように検知するか、という点についてはまだ分かっていません。
プロジェクトの方針などにもよると思うので正解はないとは思っているのですが、
ご助言いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー