我希望主ViewModel拥有一个特定的列表,并可以从许多其他ViewModel中访问。
例如,我将在MainViewModel.cs中拥有一个包含50个数字的列表,然后在NumListViewModel.cs中,我想要访问它以便将其显示为列表,在AddNumViewModel.cs中,我想要能够更新该列表。
有人建议我使用事件/事件聚合器,我也这样做了,但是不幸的是,据我所知,我只能用它将一个数字从一个视图发送到另一个视图并告诉它更新列表,但问题是,随着程序的增长,我需要在主视图模型中有很多订阅者,当实际发生某些事情时,我将不得不根据订阅者的数量“发布”事件,这使得维护更加困难。
我还找到了另一个答案,指示在mainVM内创建另一个VM的实例,并将参数设置为“this”,这是对mainVM的引用。它有效,但同样会变得相当冗长。
所以我的问题是,有没有一种更好的方法可以从另一个VM访问属性?
就像字面上拥有包含列表的类的实例一样在主VM中,然后只需能够从其他VM更新/访问它,而无需明确编写哪个VM可以。将使生活变得更轻松。
在您的答复中,请尽量避免建议框架。 虽然有一些非常好的框架,但我希望至少自己能够实现这一点。
例如:
MainVM.cs:
public class MainVM
{
List lst = new List(); //Let's just say it's full...
}
OtherVM.cs:
public class OtherVM
{
lst.Add(3);
}
PS:我知道这个问题已经被问过了,而且我也做过研究,但是我发现找到的答案都太“静态”了,我想说?