gpt4 book ai didi

c# - MVVM - 用户控件相互通信的理想方式是什么

转载 作者:可可西里 更新时间:2023-11-01 07:52:44 25 4
gpt4 key购买 nike

我有一个用户控件,其中包含多个其他用户控件。我正在使用 MVVM。每个用户控件都有一个对应的 VM。这些用户控件如何相互发送信息?我想避免在后面的 xaml 代码中编写任何代码。我特别感兴趣的是控件(在主用户控件内)如何相互通信以及它们如何与容器用户控件通信。

编辑:我知道使用事件委托(delegate)将帮助我解决这个问题。但是,我想避免在 xaml 代码隐藏中编写任何代码。

最佳答案

通常,最好尝试减少各部分之间的通信量,因为每次两个用户控件相互“交谈”时,都会在它们之间引入依赖关系。

话虽这么说,但有几件事需要考虑:

  • UserControls 始终可以通过公开属性和使用 DataBinding 与其包含的控件“对话”。这非常好,因为它在所有方面都保留了 MVVM 风格。
  • 包含控件可以使用属性将两个用户控件上的两个属性“链接”在一起,再次保持干净的边界

如果您确实需要更明确的沟通,有两种主要方法。

  1. 实现两个元素通用的服务,并使用依赖注入(inject)在运行时提供实现。这让控件可以与服务对话,而服务又可以使控件保持同步,同时将依赖性保持在最低限度。
  2. 使用某种形式的消息传递在控件之间传递消息。许多 MVVM 框架都采用这种方法,因为它将发送消息与接收消息分离,再次将依赖关系保持在最低限度。

关于c# - MVVM - 用户控件相互通信的理想方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1798600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com