MVVM轻型模型推向控制和DataService

时间:2019-04-19 19:53:18

标签: .net model mvvm-light inotifypropertychanged dataservice

我正在创建WPF用户控件。它应该反映应该使用我的控件从应用程序中为控件设置的模型。

在控件中,我使用基于MVVM Light的MVVM模式。我有一些视图和视图模型,并且基于“ Mode”属性,用户控件中的ContentControl将绑定到ViewModelBase类型的属性。然后,用户控件使用DataTemplates,以便相应的视图将由contentcontrol显示。

在MVVM Light样本中,他们倾向于使用DataService来检索模型。我非常喜欢这个想法,因为它允许设置Designtime数据。

现在是我的问题。就我而言,我无法从已知位置获取模型,该模型将从外部设置,并且可以在运行时更改为其他对象,您建议使用哪种设计模式来支持仍允许Designtime数据的设计模式?

我现在的想法(除非有更好的建议)是在后面的用户控制代码中添加属性“ Model”,以便应用程序可以设置/更改模型。然后,用户控件需要通知VM(或可能是DataService)读取它。我知道模型通常不是通过View / usercontrol设置的,但是对我来说,对于使用我的控件的用户来说,这似乎是最直观的,他们只会说control.Model = theModel;

我最好的主意是让属性后面的用户控制代码使用Messenger来将模型发送到DataService或直接发送到所有VM。你会推荐什么?如果我使用DataService,我认为DataService无论如何都必须通知VM模型已更改。

在通常使用此设计(模型对象可能更改为其他实例)的情况下,您还将如何设计模型以将更改后的属性通知给ViewModels。 INotifyPropertyChanged,Messenger还是其他?

0 个答案:

没有答案