问题标签 [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 投票
5 回答
2266 浏览

wpf - WPF - 在页面/窗口级别响应 ViewModel 更改的最佳方式

我正在开发一个 XBAP,我有一个简单的要求。

整个DataContext主页的 设置为 my 的一个实例UserViewModelUserViewModel有一个DependencyProperty被调用的AuthenticationState对象,它是一个枚举值,例如 ' Authenticated'、' NotAutheticated' 和 ' AuthenticationFailed'。

现在,我需要通过隐藏/显示页面上的各种元素来响应此值的任何变化。

最好的方法是什么(以及在哪里)?

0 投票
25 回答
629165 浏览

model-view-controller - MVC 和 MVVM 有什么区别?

标准的“模型视图控制器”模式和微软的模型/视图/视图模型模式有区别吗?

0 投票
2 回答
3141 浏览

wpf - System.Windows.Input 对 C++/CLI 不可用?

我正在使用 C++/CLI 中的 ViewModel 开发 WPF 应用程序,因此它可以使用旧版 C 代码。我在将命名空间 System.Windows.Input 暴露给 C++/CLI 代码时遇到问题,想知道这是否是因为 WPF 并不真正支持 C++/CLI?我真的必须插入一个 C# 层才能实现类似 Josh Smith 的CommandSinkBinding吗?

当我尝试在 C++/CLI 项目中添加引用时,我只能看到 System.Windows.Presentation 和 System.Windows.Forms。

C# 程序可以说的地方

我在 C++/CLI 中遇到错误

错误 1 ​​错误 C2039:“输入”:不是“系统::Windows”的成员

0 投票
5 回答
2318 浏览

c# - 编译后将属性注入 .NET 类

我想在不引用 WPF 程序集的情况下实现 WPF 的 MVVM 模式的 ViewModel 部分。有问题的部分是命令路由,它要求 ViewModel 实现类型的属性,ICommand以便命令绑定可以工作。

现在,我可以避免ICommand并简单地将属性声明为object. 一切仍然有效,就是这样。但困扰我的是,我仍然必须声明它们,我真的不想这样做,因为它们感觉就像样板代码

我的 ViewModel 目前看起来像这样:

启用命令处理程序(一个和一个可选)的CommandHandlerAttribute运行时发现,而实际上是将自身注入属性设置器和调用的一个方面。我通过使用编译时 IL weaver来实现这一点。ActionFunc<bool>BoundPropertyAttributeINotifyPropertyChanged

理想情况下,我也想隐含最后一行(SayHello 属性)。如果不是 WPF 的要求,那么将它放在源代码中是没有意义的。

因此,很自然地,我正在考虑使用CommandHandlerAttribute方面将必要的 IL 注入到类中,并从本质上创建属性 post-compile。这是相当困难的,尽管一个好的 IL 编织器(例如PostSharp)可以大大简化它。

在我踏上这段旅程之前,我想听听大家对我的方法的看法。好听吗?有没有更好的办法?你会/怎么做?

0 投票
1 回答
269 浏览

mvvm - MVVM - ViewModel which is also a region?

I have a "DataRegion" that is an ItemsControl. I add ViewModels to it and through DataTemplating the views are rendered.

My question is that this ItemsControl now needs logic to do with setting up Commands in menus for the Items (they can't do it themselves as it the logic is dependendant on the number of items, i.e. there must be one item visible all the time)

I want it to be a ViewModel, but can't work out how to instaniate it and associate it to the items control?

I can't bind it to the items control as the region will throw an error. I have added it as a property to the shell and it currently accesses the region views to get to the child viewmodels that it needs to control.

Any better ideas?

0 投票
1 回答
4352 浏览

wpf - 绑定wpf listview后选择所有项目

我有以下 XAML:

绑定项目列表工作正常,我得到一个带有复选框的漂亮列表视图,但我希望立即将它们全部选中。ListView 上有一个 SelectAll() 方法,但我什么时候可以调用它?DataContextChanged 不起作用,因为我在填充 DebitOrderItems 之前链接它。

0 投票
1 回答
1423 浏览

silverlight - 在此 Silverlight MVVM 示例中,如何将 ModelView 连接到模型?

我使用Silverlight 中的模型视图视图模型 (MVVM) 文章作为在 Silverlight中创建我自己的 MVVM 示例的基础。

我有下面的所有部分:

  • 主页(加载所有内容)
  • 查看(带有绑定的 XAML 文件)
  • 模型(生成虚假列表集合的客户类)
  • ModelView(继承 INotifyPropertyChanged 并具有 View 需要的两个字段的 PropertyChanged)

在我的主页中,我:

  • 创建视图模型
  • 将ViewModel绑定到ViewDataContext
  • 创建模型(客户)

但是现在我如何将 ModelView 连接到 Model 呢?我觉得好像我需要以某种方式将我的客户模型注入到 CustomerViewModel 中,对吗?但具体如何?完成这个 MVVM 示例的下一步是什么,以便我可以开始使用 MVVM 模式的优势,例如用测试模型替换模型,用新视图替换视图等。


MainPage.xaml.cs: 创建 ViewModel,将 View 附加到 ViewModel

MainPage.xaml: 在主页面的上下文中显示视图

CustomerViewModel.xaml: ViewModel

CustomerHeaderView.xaml 视图

Customers.cs 模型

0 投票
2 回答
6051 浏览

wpf - WPF TextBlock 动态粗体和斜体部分

我正在使用 MVVM 模式,并且我的 ModelView 中有字符串类型属性。

该字符串可能包含以下 HTML 标记:

我需要将 TextBlock 中的某些文本部分设为正常、粗体或斜体。

目前我已经创建了解决方法,一个像这样工作的辅助方法:

  1. 将 HTML 字符串分成几部分

  2. 创建 Run 类的实例

  3. 根据标签,设置 FontWeight 或 FontStyle 属性

  4. 将 Run 类的实例添加到 TextBlock 的 Inlines 集合

此解决方案有效,但与 MVVM 模式不兼容。

我正在考虑使用转换器,但我不确定我应该绑定到 TextBlock 的哪个属性。

你怎么看,这个问题怎么解决?

0 投票
4 回答
5767 浏览

c# - 使用 MVVM 为 WPF 搭建脚手架?

谁能告诉我是否有可能(如果存在某些实用程序??)考虑到带有 WPF 的 MVVM 来创建脚手架。

我的想法是我似乎有很多数据访问表单,当然我想自定义它们,但最初我想要一种快速提供表单的方法,即放置在它们上并绑定到 mvvm 的所有控件?

也许我问了很多?

基本上这些表格会为我自动创建,后来我可以自定义它们并移动它们,但最初它们只是可以工作。

脚手架 - 我从 Web 开发中窃取了这个术语,但我认为它仍然存在于 wpf 中?

有任何想法吗?

0 投票
2 回答
6729 浏览

.net - WPF MVVM 使用命令与事件处理程序

我喜欢 MVVM 模式,一旦你开始使用它,你就会沉迷其中。

我知道在完美世界中,您的 View 代码隐藏几乎是空的(可能是构造函数中的一些代码),并且 View 的各个方面都是从 ViewModel 操作的。

但是有时在 ViewModel 中创建新字段、属性和命令会比在事件处理程序中实现相同的东西创建更多的代码。

目前我坚持以下规则:

如果事件处理程序代码操作其视图的很小部分(例如,按钮单击事件处理程序增加位于同一视图上的某些 TextBlock 的字体),则可以在事件处理程序内实现逻辑。但是如果 View 需要操作业务逻辑或访问视图之外的资源,那么我将这些职责分配给 ViewModel。

你觉得我的方法怎么样?

在使用事件处理程序和 ViewModel 时,您会尽量避免什么?

在使用 MVVM 模式时,您可以推荐哪些最佳实践?