gpt4 book ai didi

wpf - 是否以及如何使用 MVVM

转载 作者:行者123 更新时间:2023-12-04 20:02:00 25 4
gpt4 key购买 nike

您好,我从 MSDN 上阅读了很多关于 MVVM 的文章。

我至少在技术上理解了它,但我不知道是否应该说我理解它是一种设计模式。

自从在我的场景中想象 MVVM 时,我的想法就卡在了某个地方。所以请帮助决定是否使用 MVVM,如果是如何使用。

我有一个包含一些形状和按钮的布局。我允许用户自定义它们(至少颜色和字体)。我正在考虑将可自定义的属性值存储为 XML 并将它们单向绑定(bind)到 XmlDataSource。每次用户启动应用程序时,都会从 Xml 文件中检索颜色/字体。

当用户单击布局组件之一时,例如按钮,将填充用于自定义按钮的 UI(例如颜色选择器和字体选择器)。现在用户可以选择更改颜色/字体。所以在这里,我认为我应该生成自定义 UI,将其绑定(bind)(通过代码动态地?)到 ViewModel,ViewModel 将包含操作 Xml 的方法(这将是 Model XmlDataProvider)。

然而,我在网上阅读的所有文章都在谈论对象 ViewModel(并通过许多接口(interface)将其连接到 UI),但没有谈论 ViewModel 如何绑定(bind)到底层数据源,无论是 XML 还是 SQL。

因此,从布局到 Xml 文件 - 将有一种绑定(bind)方式,从自定义 UI 到 Xml 文件,两者之间将有 ViewModel。

自定义 UI 所做的任何更改都会立即反射(reflect)在布局上吗?这种绑定(bind)架构是否正确?在这种情况下会发生这种情况吗?我在搞乱 MVVM 设计理念吗?这应该是不同的方式吗?或者我不应该去 MVVM?请帮忙。

我努力学习了所有的大文章,我理解得很好,但是:(。谢谢。

最佳答案

MVVM 非常适合您尝试做的事情,但请记住,MVVM 的目标是在 UI 级别提供抽象。它将 UI 显示逻辑与获取和转换数据的逻辑分开。

从 XML 加载配置内容很好,但就您的 View 而言,它只需要知道要绑定(bind)到 ViewModel 上的哪个属性。当您的 ViewModel 更新该属性(通过查询模型)时,UI 将自动更改,您无需执行任何操作。

您的 ViewModel 如何获取数据完全取决于您。这就是模型的用武之地。您的模型获取将由 ViewModel 使用的数据。这不是硬性规定,但您的模型将是解决方案中用于获取数据的服务或另一个类。服务或类提供用于从数据源查询数据的数据访问方法。该模型前面可以有一个接口(interface),因此如果您需要在该级别工作,可以互换它。

如果您使用的是 Silverlight,数据很可能来自对服务器上 Web 服务的调用。如果您使用的是 WPF,您可能有一个直接从 XML 文件或数据库中提取的数据层。 ViewModel 只负责提供 View 和数据之间的粘合剂。我只是不会将查询逻辑直接放在 ViewModel 中。我会将其放在单独的数据层中。

以我的拙见,许多 MVVM 拥护者喜欢使模式过于复杂。他们将一切都包装在接口(interface)中,并编写大型框架来实现 MVVM。这些工具占有一席之地,但我相信人们必须谨慎行事,不要让可以通过更简单的实现来解决的解决方案过于复杂。对于基本应用程序,只需拥有一个 View 直接绑定(bind)的 ViewModel 类就足够了。

关于wpf - 是否以及如何使用 MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9743659/

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