メインのビューモデルに特定のリストを持たせ、他の多くのビューモデルからアクセスしたい。
たとえば、MainViewModel.cs には 50 個の数字のリストがあり、NumListViewModel.cs ではそれにアクセスしてリストとして表示し、AddNumViewModel.cs ではできるようにしたいと考えています。そのリストを更新します。
events / evenaggerator を使用することが提案されていますが、残念ながら、それでできることは、あるビューから別のビューに num を送信し、リストを更新するように指示することだけですが、問題は次のとおりです。プログラムが大きくなると、メイン ビュー モデルに多くのサブスクライバーが必要になり、実際に何かが発生すると、サブスクライバーの数に応じてイベントを「発行」する必要があり、維持がさらに難しくなります。
また、mainVM への参照である「this」に設定されたパラメーターを使用して、mainVM 内に anotherVM のインスタンスを作成するように指示する別の回答も見つけました。動作しますが、かなり長くなる可能性があります。
私の質問は、別の VM からプロパティにアクセスするためのより良い方法はありますか?
文字通り、mainVM にリストを保持するクラスのインスタンスがあり、どの VM ができるかを明示的にプログラムしなくても、他の VM から更新/アクセスできるようになります。生活がとても楽になります。
あなたの答えでは、フレームワークを提案しないようにしてください。すごくいいものもあるけど、それくらいは自分でできるようになりたい。
例えば:
MainVM.cs:
public class MainVM
{
List lst = new List(); //Let's just say it's full...
}
その他の VM.cs:
public class OtherVM
{
lst.Add(3);
}
PS:はい、すでに質問されていることは知っています。はい、調査を行いましたが、見つけた答えは「静的」すぎると思いますか?