问题标签 [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.
c# - 在 WPF UserControl 中附加 ICommand
我实现了一个带有图像的简单按钮:
如您所见,我公开了一个 ButtonCommand 属性,以便能够将 ICommand 附加到此 UserControl:
然后,当我声明我的按钮时,它会给出:
<uc:ImageButton Grid.Row="1" Grid.Column="0" ButtonCommand="{Binding AttachContextCommand}" ButtonImage="{StaticResource AssociateImage}" ButtonText="Associer"/>
还有 badaboom,当我点击我的 ImageButton 时,什么都不会发生。当我用一个简单的按钮替换 ImageButton 时,会调用 ICommand。
我什至尝试简单地扩展 Button 类并绑定一个 ICommand,但再一次,它没有工作......
帮助表示赞赏!
谢谢。
wpf - ViewModel 如何知道服务中的数据何时更新?
在我的应用程序中,我有几个 ViewModel 有一个服务(存储库、DAO 等),我们称它为WidgetService 并注入它们。
假设这些 ViewModel 之一是所有用户小部件的列表。另一个可能是用于编辑/创建其中一个小部件的 ViewModel。
用户可以在WidgetListViewModel支持的WidgetListView中查看小部件列表,然后单击按钮添加新小部件。为了创建这个新的 Widget,创建一个CreateWidgetViewModel并注入到一些 UserControl/Window 的 DataContext 中,因此,通过 DataTemplates 在 CreateWidgetView 中显示CreateWidgetViewModel的魔力。此外,CreateWidgetViewModel的更新不一定发生在WidgetListViewModel的范围内。
当WidgetListViewModel被注入 WidgetService 的实例时。CreateWidgetViewModel被注入了同一个WidgetService实例。
现在,当用户在CreateWidgetView中单击保存时,将调用WidgetService上的Save方法,并且小部件将被持久化。现在需要通知WidgetListViewModel有一个新的 Widget 要显示!
长时间的积累导致了这个问题:我如何让WidgetListViewModel知道它需要显示新的 Widget?
我看过一个视频,其中一个来自 Microsoft 的人使用 ViewModel 订阅的服务上的事件来做这种事情。然而,这样做的缺点是,如果服务比视图模型寿命更长,那么视图模型将不会被 GC 处理,直到服务被 GC 处理。我可以将 IDisposable 添加到 ViewModel。但是,当 ViewModel 仅通过 DataTemplates 在 UI 中表示时,何时/如何调用 Dispose?
有人对此有什么建议吗?
为了澄清,我想说我对 MVVM 的解释最接近 Josh Smith 的解释。至少在我的 MVVM 架构上与 Crack.Net 源代码中的架构非常接近。
mvvm - MVVM 路由和中继命令
RoutedCommand和RelayCommand 有什么区别?在 MVVM 模式中何时使用 RoutedCommand 以及何时使用 RelayCommand?
apache-flex - MVVM - 什么应该包含什么......什么应该创造什么
我有一个正确的巴尼,让我了解如何使用 MVVM 模式将所有东西组合在一起。在实践中这一切似乎都很简单,但试图实现它我似乎打破了我尝试编码的各种其他规则。
顺便说一句,我正在尝试使用 Flex 来实现该模式,而不是 Silverlight 或 WPF,所以如果有人能提出不应该这样做的充分理由,那么我想听听他们的意见。
我有一个问题,我有几个观点。有时我必须同时在页面上显示两个视图;有时我会切换回单个视图。在我正常的 Flex 大脑中,我会有一个带有代码隐藏的主视图,其中包含我所有的其他视图(同样带有代码隐藏)。然后,该主视图将切换其他单独的视图。
当我尝试在 MVVM 中实现这一点时,我试图通过使用将 myViews
与ViewModels
. 假设我创建了一个ViewModel
应用程序范围的状态,并ApplicationView
绑定到该数据并执行子视图的所有切换。
现在,我应该在哪里为我的子视图创建视图模型?我在里面试过ApplicationView
——这似乎不对。然后我尝试在应用程序视图之外并将它的实例传递给ApplicationView
然后我的子模型绑定到它。我错过了什么吗?这些方法似乎都不适合试图将其解耦的全部要点。
任何解释这个问题的好书或链接将不胜感激。
干杯,詹姆斯
silverlight - Prism 2 SL:单击按钮时从区域中删除视图
我是 Prism 的新手,我正在尝试确定在 Prism 2 应用程序中停用视图的最佳实践——当用户单击视图上的按钮时,我想停用视图。单击按钮时视图正在执行命令。
视图模型正在接收命令,但视图模型没有对 regionmanager 的引用。
视图模型应该知道区域管理器吗?即使视图模型有对它的引用,它也需要将视图实例传递给包含区域的 deactive 方法。
我正在为应用程序使用 MVVM 模式。
wpf - Best place to bring up new window in Model View ViewModel
I have an MVVM application. In one of the ViewModels is the 'FindFilesCommand' which populates an ObservableCollection. I then implement a 'RemoveFilesCommand' in the same ViewModel. This command then brings up a window to get some more user input.
Where/what is the best way to do this whilst keeping with the MVVM paradigm? Somehow doing:
in the ViewModel seems wrong.
Cheers,
Steve
wpf - 如何进一步将这个 WPF 示例与 MVC、MVP 或 MVVM 解耦?
我通过以下方式解耦了此 WPF 应用程序中的事件。
继续解耦的最佳方式是什么?
Shell.xaml:
引导程序.cs:
Shell.xaml.cs:
客户.cs:
上面的代码成功地将视图Shell
与模型分离,Customer:IPerson
以便我可以交换模型Employee:IPerson
等,它以自己的方式处理“已处理”。那是第一个目标。
但现在:
- 如何将
Processed
方法与专门与 Button 对话分离,以便它也可以与在视图中触发事件的 MenuItem 或 ListView 对话,这样它甚至不必是调用它的元素,例如单元测试类? - 除了发送者(按钮)之外,我如何更改视图的其他元素,例如,我将如何更改 Shell 中的状态栏?我看到两种方法:
- 我可以构建一个包含所有视图的容器,并在创建时将容器注入到客户中,然后客户可以查看容器并根据需要操作调用视图(尽管我必须以某种方式匹配发送事件的视图和容器中的视图相同)
- 我可以在触发事件时以某种方式将整个视图(Window 对象)发送到带有 eventargs的模型,尽管模型需要某种方式来了解(通过接口)在运行时可以操作哪些类型的区域
- 您将如何继续这个应用程序朝着更加解耦的设计方向发展?
- 这实际上是什么模式,例如 MVC、MVP、MVVM?我只看到一个视图(Shell)和一个模型(客户)。
- 演示者如何适应?
- ViewModel 如何适应?
- 控制器如何适应?
wpf - WPF 上下文菜单未绑定到正确的数据绑定项
在标签页上的用户控件的上下文菜单中绑定命令时遇到问题。我第一次使用菜单(右键单击选项卡)时效果很好,但是如果我切换选项卡,该命令将使用第一次使用的数据绑定实例。
如果我在用户控件中放置一个绑定到命令的按钮,它会按预期工作......
有人可以告诉我我做错了什么吗?
这是一个暴露问题的测试项目:
应用程序.xaml.cs:
Window1.xaml:
用户控件1.xaml:
CompanyViewModel.cs:
PersonViewModel.cs:
测试命令.cs:
个人.cs:
wpf - WPF MVVM ComboBox SelectedItem 或 SelectedValue 不起作用
更新
经过一番调查。问题似乎是 SelectedValue/SelectedItem 在项目源完成加载之前发生。如果我坐在断点处等待几秒钟,它会按预期工作。不知道我将如何解决这个问题。
结束更新
我有一个在 WPF 中使用 MVVM 和 ComboBox 的应用程序。下面是 ViewModel 示例。我遇到的问题是,当我们离开页面并迁移回 ComboBox 时,没有选择当前选中的值。
查看模型
为了这个例子,假设 MyObject 有两个属性(Text 和 Id)。我的 ComboBox 的 XAML 看起来像这样。
XAML
当我回到页面并重新组装对象时,无论我以哪种方式配置它,ComboBox 都不会选择该值。该对象通过属性中的 get 返回正确的对象。
我不确定这是否只是 ComboBox 和 MVVM 模式工作方式的问题。我们正在做的文本框绑定工作正常。
silverlight - 如何在 Silverlight 3 中将 .NET RIA 服务与 MVVM 相结合?
.NET RIA 服务被描述为 Silverlight 的 n 层框架。我一直想知道这个框架和 Model-View-ViewModel 模式之间的关系是什么。它们是否存在冲突,或者你能看到协同组合的潜力吗?