问题标签 [mvvm-light]

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 投票
3 回答
3760 浏览

c# - 如何拥有多对“View-ViewModel”?

我正在构建一个基于 MVVM-Light 的应用程序。我需要创建同一个视图的多个实例,每个实例都应该绑定到自己的 ViewModel。

默认将ViewModelLocatorViewModel 实现为单例,因此同一个 View 的不同实例将绑定到同一个 ViewModel。

我可以在 VMLocator 中将 ViewModel 创建为非静态对象(就像返回 new VM()... 一样简单),但这只会部分帮助我。事实上,我仍然需要跟踪打开的窗口。然而,每个窗口可能会打开其他几个窗口(尽管类型不同)。在这种情况下,我可能需要对父视图及其所有子视图执行一些操作。例如,在关闭视图 P 之前,我可能想要关闭它的所有子视图(视图 C1、视图 C2 等)。

因此,是否有任何简单易行的方法来实现这一目标?或者您有什么最佳实践建议我遵循吗?

提前感谢您的宝贵帮助。

干杯,
吉安卢卡。

0 投票
1 回答
758 浏览

silverlight - MVVM - 具有导航和可混合性的主/细节场景

我将从我想要的开始,这样可能更容易理解:

  1. 我有一个具有 PersonViewModel 列表框的页面 (Master.xaml)。
  2. 当用户从列表框中选择 PersonViewModel 时,我想导航到所选 PersonViewModel 的详细信息 (Details.xaml) 页面。
  3. 详细信息页面做了一些额外的繁重工作,我只希望在用户导航到该页面后完成。(我不想在主列表框的每个 PersonViewModel 中加载太多东西)

那么你们如何在保持“可混合性”的同时通过导航处理主/细节场景?

在过去的一周里,我一直在转圈。对于应该很常见的事情似乎没有干净的解决方案?

0 投票
2 回答
1415 浏览

ribbon - 带有 RibbonControlsLibrary 的 MVVM Light Toolkit 示例

我刚开始玩“MVVM Light Toolkit”,我想知道如何合并 RibbonCommand 和 RelayCommand 有没有混合 MVVM Light Toolkit 和 RibbonControlsLibrary 的示例?

非常感谢克劳迪奥

0 投票
1 回答
5316 浏览

.net - Silverlight 4 + MVVM + KeyDown 事件

我正在尝试使用 MVVM 设计模式在 Silverlight 4 中构建示例游戏以拓宽我的知识。我也在使用 Laurent Bugnion 的 MvvmLight 工具包(可在此处找到:http://mvvmlight.codeplex.com/ 。我现在要做的就是通过按特定键在画布内移动一个形状。我的解决方案包含一个 Player.xaml(只是一个矩形;它将四处移动)和 MainPage.xaml(Canvas 和 Player 控件的一个实例)。

据我了解,Silverlight 不支持隧道路由事件,仅支持冒泡。我的大问题是 Player.xaml 永远无法识别 KeyDown 事件。它总是首先被 MainPage.xaml 拦截,并且它永远不会到达任何子控件,因为它会向上冒泡。我更希望将 Player 移动的逻辑位于 PlayerViewModel 类中,但我认为如果没有我从 MainPage 显式传递它们,Player 无法知道任何触发的 KeyDown 事件。

我最终将处理程序逻辑添加到 MainPageViewModel 类。现在我的问题是 MainPageViewModel 不了解 Player.xaml,因此在处理 KeyDown 事件时它无法移动此对象。我想这是意料之中的,因为 ViewModel 不应该知道它们的关联视图。

不多说……有没有办法让我的 MainPage.xaml 中的 Player 用户控件直接接受和处理 KeyDown 事件?如果不是,我的 MainPageViewModel 与其 View 的子控件进行通信的理想方法是什么?我试图将代码尽可能地保留在代码隐藏文件之外。似乎最好将逻辑放在 ViewModel 中以便于测试并将 UI 与逻辑分离。

(MainPage.xaml)

(MainViewModel.cs)

在此先感谢,杰里米

0 投票
1 回答
1137 浏览

c# - 如何通过 EventToCommand 将 LayoutRoot 发送到 RelayCommand?

带有触发器的网格示例:

在我的 ViewModel 中,我将 LoadedCommand 设置为:

在 ViewModel 初始化程序中,我有这个:

然后,在我的 DoLoaded 中,我试图这样做:

您可以看到我正在尝试在我的视图中摆脱我的 Grid 中的 Loaded="",并改为执行 RelayCommand。问题是 OriginalSource 什么也没带回来。我加载的事件以这种方式运行良好,但我似乎需要通过 RoutedEventArgs 获取网格。

我尝试使用 CommandParameter="{Binding ElementName=LayoutRoot}" 在 EventCommand 中传递网格,但这只会在按下 F5 并运行项目时使 VS2010 崩溃。

有任何想法吗?或者更好的方法来做到这一点?我让 Loaded 事件在视图 C# 中运行,然后在视图代码隐藏中调用 ViewModel,但我想做一个更好的绑定。与 Views 代码隐藏中的 ViewMode 对话感觉就像是 hack。

0 投票
2 回答
1101 浏览

wpf - 使用 MVVM Light Toolkit 制作可混合应用程序

不久前,我发布了一个关于在 Blend 创作的 GUI 和 Visual Studio 创作的 GUI 之间切换的问题。通过将我的 Blend 项目添加到我的 VS2008 项目中,然后更改启动应用程序并重新编译,我让它正常工作。这将导致两个应用程序具有完全不同的 GUI,但使用完全相同的 ViewModel 和 Model 代码。我对此很满意。

既然我已经了解了 Laurent Bugnion 的 MVVM Light Toolkit,我真的很想利用他的努力来使支持同一后端代码的多个 GUI 的过程成为可能。问题是,工具包是否促进了这一点,还是我坚持以前的方式?

我在 MIX10 上看过他的视频,并在网上阅读了一些关于它的文章。但是,我还没有看到表明有一种干净的方法允许用户通过加载不同的 DLL 动态切换 GUI。VS2008 和 Blend 3 有 MVVM 模板,但我是否应该为我的应用程序创建这两种类型的项目,然后从我的 VS2008 解决方案中引用特定文件?

更新 我重新阅读了 Laurent 网站上的一些信息,似乎忘记了模板的全部意义在于允许在 VS2008Blend中打开相同的解决方案。所以无论如何,从这个新视角来看,模板实际上是打算使用单个 GUI,很可能完全在 Blend 中设计(通过 VS2008 方便调试),然后能够使用两种不同的 ViewModel——一个用于设计时,一个用于运行时。

所以在我看来,我的问题的答案是我想结合使用我以前的解决方案以及 MVVM Light Toolkit。前者将允许我围绕我的核心代码制作多个不同的 GUI,而后者将通过使用设计时 ViewModel 使在 Blend 中设计精美的 GUI 变得更容易。任何人都可以对此发表评论吗?

0 投票
1 回答
1408 浏览

silverlight - 简单绑定问题,无法使用 MVVM Light Toolkit 绑定到 DataTemplate 中的按钮命令

我一直在尝试绑定到 DataTemplate 中的按钮,但没有取得多大成功。该按钮不触发。按钮单击在 DataTemplate 之外成功工作。但是,如果我创建 Click="button_click",则会触发单击按钮。按钮内容也完美绑定。

举例说明..

为什么命令不触发?关于如何处理的建议?该示例是我的实际问题的简化版本,我目前没有使用列表框。我只用列表框重新创建了同样的问题..

0 投票
3 回答
11780 浏览

c# - MVVM 轻信使类

任何人都可以提供有关如何在 MVVM Light 中使用 messenger 类的示例/链接/简单插图/视频/演示吗?

0 投票
1 回答
746 浏览

.net - MVVM-Light:当我构建时,项目中不存在目标“RunCodeAnalysis”?

刚刚为自己构建了一个 mvvmlight 应用程序,如果我按 f5 编译并运行一切正常,它会显示 wpf 窗口

但如果我做一个 BUILD 我得到一个错误

我用的是visual studio 2010专业版RTM

我唯一觉得奇怪的是目标框架设置为 .NET 框架 4 客户端配置文件

有谁知道为什么会这样??

0 投票
1 回答
12011 浏览

.net - Silverlight+MVVM-Light 中的 SelectionChanged 事件绑定

ComboBox 控件的“SelectionChanged”事件的处理程序具有以下签名:

如何将 Silverlight 4 和 MVVM-Light 下的该属性绑定到 ViewModel 对象的相应方法?

据我所知,我需要做这样的事情:

问题是 MVVM-Light 框架中的 RelayCommand 类不支持 2 个通用参数...

这种情况有什么解决方案或解决方法吗?如何将控制事件绑定到具有 2 个参数的方法?

还有一个问题:ComboBox 没有“Command”属性来绑定这个命令..?如何获取 ViewModel 的事件?

谢谢。

PS 我尝试使用组合框的 SelectedItem 属性,但似乎 ComboBox 实现不正确并且不起作用...