问题标签 [mvvm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
284 浏览

wpf - 在主从情况下在两个窗口中绑定控件的最佳方法

假设您有两个窗口,其中一个窗口有一个列表框,而另一个窗口应该有当前在列表框中选择的项目的详细信息。在一个窗口中这很容易做到,但是如何在两个窗口中做到这一点?不幸的是,这里只有两个窗口。

0 投票
8 回答
6487 浏览

wpf - 使用 WPF MV-VM 模式显示弹出窗口的正确方法

当谈到弹出窗口时,我有一个关于 VM 职责的问题。当应用程序弹出消息框或某种对话框(使用 MVVM)时,我们有两个选项:

  1. 将 UI (ShowDialog()) 代码放在 VM 中,这似乎很糟糕
  2. 让 VM 发送某种 UI 可以订阅的事件并在后面的代码中显示一个对话框(但我们正在努力实现后面的零代码:))

各位大佬是怎么处理这个案子的?

0 投票
3 回答
5318 浏览

wpf - 您在 MVVM 中绑定 DataContext 的策略是什么?

这两个 1 小时的视频分步展示了如何使用 MVVM 模式在 Silverlight 和 WPF 中构建简单的测验应用程序:

在 Silverlight 中实现模型-视图-视图模型

在 WPF 中实现模型-视图-视图模型

令我惊讶的是它们在结构上的不同之处,例如,它们如何使用 DataBinding:

在 Silverlight 方法中,我们将View的 DataContext 设置为ViewModel中的ObservableCollection

在 WPF 方法中,我们Window的 DataContext 设置为ViewModel本身

似乎我看到的每个 MVVM 示例都以稍微新的变体进行 DataContext 绑定,我试图确定一些坚实的基础,即“如何在 MVVM 模式中完成 DataContext 绑定”。

当您决定将 DataContext 绑定到某个东西时,您会想到什么:为什么要将Window / View / ListBox / 等的 DataContext 绑定到ObservableCollection / ModelView / 等?这里有什么优点、缺点和策略?

任何输入表示赞赏。

0 投票
2 回答
2481 浏览

mvvm - 您如何处理 MVVM 中的更改跟踪?

我写了一个小助手来做客户端更改跟踪对象/dtos 以在我的 ViewModel 中使用(请参阅http://viss.be/2009/04/02/modelviewcontext-client-side-change-tracking/

我没有找到很多关于这个主题的资源。所以我想知道;你通常如何处理它?

谢谢,马克

0 投票
1 回答
1729 浏览

wpf - FlowDocument 中的 WPF 句柄链接

我正在使用 WPF 构建简单的字典应用程序。

我正在使用 MVVM 模式、数据绑定和 FlowDocument 向用户显示单词。

UI 由 2 个控件组成:ListBox 和 FlowDocumentScrollViewer。

字典数据来自 XML 文件,该字符串的格式可能如下所示

HTML 和参考元素的顺序没有定义。

我解析 HTML 字符串,将其转换为 XAML,然后从 XAML 创建 FlowDocument 对象并将其绑定到 FlowDocumentScrollViewer 控件的 Document 属性。

当我需要链接参考时出现问题。元素。(我的要求是当用户点击引用链接时,在 ListBox 控件中选择引用的单词并显示在 FlowDocumentScrollViewer 中)

我的问题是有一种方法可以动态创建“超链接”样式的控件(附带事件或命令),它将用户带到字典中引用的单词。

有可能完全解决这个问题吗?

0 投票
1 回答
847 浏览

silverlight - Silerlight MVVM 异常处理

在 MMVM 应用程序中,应该如何处理和冒泡异常?

如果我在异步回调期间在我的模型中遇到异常并抛出异常,则这不会冒泡到 ViewModel。我怀疑这是因为回调没有在 UI 线程上运行。

这方面的最佳做法是什么?

标记

0 投票
3 回答
713 浏览

wpf - 如何发送验证消息表单模型以在 MVVM 模式中查看?

我有一个小型测试 WPF MVVM 应用程序在其中工作,其中一个视图允许用户更改客户的名字或姓氏,并且全名会自动更改,因此通信从 M 到 MV 到 V 并返回,一切都完全解耦,到目前为止一切顺利。

但是现在,当我考虑如何开始扩展它以使用 MVVM 模式构建大型应用程序时,我发现解耦是一个障碍,即:

  • 我将如何进行验证消息,例如,如果回到 LastName 设置器中的模型中,我添加了阻止设置超过 50 个字符的名称的代码,我如何向视图发送消息,告诉它显示名称太长的?

  • 在复杂的应用程序中,我可能一次在屏幕上有几十个视图,但我知道在 MVVM 中,每个视图都有一个且只有一个 ViewModel 分配给它来为其提供数据和行为,那么视图如何交互例如,在上面的验证示例中,如果回到客户模型中,我们想要通知特定的“MessageAreaView”以显示消息“姓氏可能只包含 50 个字符。”,我们如何在堆栈中进行通信到那个特定的观点?

CustomerHeaderView.xaml(视图):

Customer.cs(模型):

0 投票
2 回答
1032 浏览

silverlight - Silverlight MVVM 隔离存储

我尝试在我的 ViewModel 中使用 IsolatedStorageSettings,但这些设置不会在浏览器刷新 (F5) 时保留。

例如;

我需要在我的 MVVM ViewModel 中做一些不同的事情吗?

编辑 值得注意的是,这段代码位于一个引用的项目中——因此最终将一个单独的 XAP 文件发送到浏览器中加载的父 XAP——这是否会导致每次刷新时丢失设置?

谢谢,马克

0 投票
2 回答
511 浏览

wpf - 如何在 ViewModel 之间进行通信

我有一个带有 TabPage1 和 TabPage2 的 TabControl,在 TabPage1 中,还有另一个带有 2 个项目 TabPage11 和 TabPage12 的 TabControl1。
在 TabPage2 中,还有另一个 TabControl2,其中包含 2 个项目 TabPage21 和 TabPage22。

每个项目(TabPage11、TabPage12、TabPage21 和 TabPage22)都有自己的 View(以 UserControl 的形式)和 ViewModel。每个视图上都有 dataGrid。

现在我想为每个 dataGrid 实现 ExportToExcel 函数。我可以在每个 tabItem 上放置一个 ExportToExcel 按钮,但它看起来不太好。所以我在主窗口上放了一个按钮,这样当用户单击该按钮时,所选 tabItem 上的 dataGrid 就会得到处理。

问题是 mainWindow 上的按钮不知道如何告诉
所选 tabItem 的 ViewModel 将其导出。

有什么建议么?提前致谢!史蒂夫

0 投票
6 回答
3982 浏览

wpf - 您知道任何使用 MVVM 的真实、有用的 WPF/Silverlight 应用程序吗?

我正在寻找(1) 使用 MVVM 模式(2) WPF/Silverlight/MVVM 初学者可以使用的完整应用程序的代码。到目前为止,我只发现:

  • Crack.NET - 运行时调试和脚本工具(有用但相当复杂)
  • CipherText - WPF 密码管理器(完美但用 VB.NET 编写)

还有一些是什么?

最好是使用 MVVM 但具有完整感觉的较小帮助应用程序或工具,可能具有 WPF/Silverlight 图形/动画优点等,它们不仅显示正在使用的 MVVM 概念,而且显示在真实世界的完整应用程序的上下文中

我的贡献

感谢所有提示,我收集了 15 个以上 MVVM 代码示例的列表并发布在此处:

帮助您学习 MVVM 的 WPF/Silverlight 代码示例概述