结合视图模型性能之间进行选择或消息使用MVVM光工具包视图模型和视图之间进行通信

StackOverflow https://stackoverflow.com/questions/4002667

  •  25-09-2019
  •  | 
  •  

我使用MVVM光工具包(我爱)。我公司目前已经制定了从视图模型的一些互动始发消息和用于由视图消费。通常,这些类型的消息表示视图应该这样做隐藏自身,显示一条确认消息,数据被保存,等等。

此工作。在构造用于View,我注册与所述信使:

Messenger.Default.Register<NotificationMessage<PaperNotification>>(this, n => HandlePaperNotification(n));

当我使用的信使通信的ViewModels(如同一性)之间横切关注,我可以看到,当在ViewModel在ViewModelLocator被清理,为的ViewModels基类(ViewModelBase)注销任何订阅消息。我没有做任何事情,因为MVVM光工具包的把手是对我来说。然而,当我在视图中使用它们,我必须明确地注销它们在关闭时间,像这样:

Messenger.Default.Unregister(this);

我想我可以实现用于浏览一个基类要继承。

不过,这让我感到也许这是一个代码味道使用视图使者是...它的工作原理,但它可能不是最好的办法。我不知道我是否应该改为创建绑定任何视图对IT元素的一部分,在视图模型的属性和。在隐藏表单的例子,属性可以是一个所谓的“秀”布尔。正如我想想,我可以看到,在许多情况下,这将导致在无需编写ValueConverter。一种方式似乎不太可测。另一种方式似乎需要更多的代码,并可能引入多余ValueConverters,这可能本身成为一个代码味道。

所以,(毕竟是堆积)我的问题是这样的:

时它优选在视图中使用的消息或它更好添加属性(和潜在ValueConverters),以允许视图模型来驱动它以更可绑定方式?

有帮助吗?

解决方案

在MVVM。视图模型,通过数据绑定和命令美景comunicates。如果你需要一些其他的功能,你需要使用这种手段来实现它。 消息应该是仅适用于的ViewModels。视图应该是在视图模型数据的“笨” visualisers。

其他提示

在MVVM光消息逻辑是有的ViewModels之间的通信。我从来没有碰到查看和视图模型之间的沟通,我不能用结合和/或命令解决。有时候,我需要的价值转换器,有时候我需要在后台代码,但我从来没有做过的视图模型直接将数据推送到查看。

这是一个有趣的讨论,我发现当我想知道视图模型视图通信这个线程。有趣的是,MVVMLight的创建者似乎找到它完美接受从视图模型发送消息到查看。不同关于什么是好的MVVM设计意见的另一个例子。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top