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

silverlight - MVVM Light 太快了 :)

我有一个简单的 WM7 页面,带有TextBox. 此外,我将EventToCommand(a RelayCommand<string>) 分配给 this ,对事件TextBox做出反应。TextChanged为了测试pourposes,我TextBox_TextChanged在页面后面的代码中做了额外的方法。命令并TextBox_TextChanged打印带有文本框内容的消息框。

TextBox的初始值为"ABC"。然后我按 D 并:

  1. TextBox_TextChanged打印ABCD
  2. 命令打印ABC. D 不见了。

为什么命令这么快?

命令声明:

命令初始化:

命令绑定:

0 投票
2 回答
1349 浏览

silverlight - 使用 EventToCommand 时如何判断哪个数据表单按钮结束了编辑

我是 SilverLight 和 Mvvm-Light 的新手。我的视图上有一个 DataForm,它显示/编辑我的视图模型的 SelectedPerson 属性(一个 Person 对象)。

当用户单击“保存”按钮时,我想在我的视图模型上执行命令,但如果用户单击“取消”,我不想采取行动。

我在 ViewModel 中添加了以下内容:

我在视图中添加了以下内容:

这有效,并且当用户按下提交时调用 DoSomething 方法。但是,当用户按下 Cancel 时,也会调用 DoSomething。有没有办法知道按下哪个按钮或在按下取消时抑制呼叫?

感谢您提供的任何帮助!

0 投票
5 回答
22199 浏览

c# - WPF MVVM 从 VIEW MODEL 获取父级

在 MVVM WPF 应用程序中。

你如何设置第二个 Windows 父级ViewModel

例子:

view1--viewModel1

viewModel1的命令调用:

view2.Owner= <----这是问题区域。我如何从这里获得 view1 作为所有者viewModel

编辑:

请参阅下面接受的答案,然后阅读以下编辑。

我正在使用 MVVM 灯-> http://mvvmlight.codeplex.com/ (真棒顺便说一句)

内置的消息传递系统很棒。我现在从视图模型向我的视图发送一条消息,告诉它显示另一个窗口。

对于消息,我目前在主视图中使用带有 switch 语句的字符串来确定要打开的视图;但是,我可能会修改也属于 MVVM 轻量级工具包的令牌。

谢谢!

0 投票
1 回答
393 浏览

mvvm - 如何使用 ObservableCollection 使我的 DataService 保持最新?

我有一个名为 CustomerService 的类,它只是从文件中读取一组客户或创建一个并将其传递回主模型视图,在那里它变成一个 ObservableCollection。确保 CustomerService 和 ObservableCollection 中的项目同步的最佳实践是什么。我猜我可以连接 CustomerService 对象以响应 RaisePropertyChanged,但这不是仅用于 WPF 控件吗?有没有更好的办法?

0 投票
1 回答
3157 浏览

silverlight - 在运行时动态指定和更改 Silverlight DataGrid 的列 (MVVM)

在运行时遵循 MVVM 模式在 Silverlight DataGrid 控件中动态指定 DataGrid 列的最佳方法是什么?

我想做的是将“DataGrid.Columns”属性绑定到我的 ViewModel 中的一个属性,这样,如果用户添加/删除列,我只需更新 ViewModel 属性,DataGrid 就会改变。问题是,“DataGrid.Columns”属性不能绑定(我不认为)。

因为这个属性不可用,DataGrid 控件本身在 ViewModel 级别也不可用,我目前的方法是跳出 MVVM 模式来实现这个特定的实现,并使用 MVVM Light 的 Messenger 类在 View 的代码隐藏中捕获某些事件,然后直接与 DataGrid 控件对话以实现此功能。我知道这是对这种方法的一般性陈述,没有细节,但有没有更简单的方法......或者可能不是那么容易,但是更好地遵循 MVVM 模式的更好方法?

无法绑定 DataGrid 控件的 Columns 属性,这让我抓狂……这似乎是一件很简单的事情。

仅供参考 - 在建议使用 AutoGenerateColumns = True 之前,为绑定到 DataGrid.ItemsSource 的集合中的每个项目绑定的类没有单独的属性来标识绑定到列的内容......它是一个包含列,以保持它们完全动态,以便特定路径消失。此外,出于同样的原因,处理 AutoGeneratingColumns 并使用 e.Cancel 显示/隐藏列也是不确定的(我认为)。

0 投票
4 回答
11137 浏览

wpf - 通过 MVVM RelayCommand 从 ListBox 中删除 SelectedItems

我有一个 WPF ListBox 中的项目列表。我想允许用户选择其中几个项目并单击“删除”按钮以从列表中删除这些项目。

使用 MVVM RelayCommand 模式,我创建了一个具有以下签名的命令:

在我看来,我像这样连接我的 RemoveTagsCommand:

我的 ViewModel 构造函数设置了一个命令实例:

我当前的 RemoveTags 实现感觉很笨拙,带有强制转换和复制。有没有更好的方法来实现这一点?

0 投票
2 回答
455 浏览

visual-studio-2008 - 无法将 Visual Studio 2008 Designer 与 MVVMLight V3 SP1 一起使用

我希望我知道我做了什么导致这种情况,但我根本无法将 Visual Studio 2008 Designer 与 MVVMLight 模板一起使用。我在我的任何 xaml 页面中都收到“无法创建类型为 'ViewModelLocator' 的实例。应用程序构建和运行正常,但只有设计器损坏。在 App.xaml 中

我什至在创建全新的 MVVMLight 应用程序时收到错误消息。有趣的是,如果我使用 VS2010 的快速版本,我可以很好地查看、编辑和在设计器中工作。尽管我很想去 VS2010,但我现在无法说服 IT 采取行动。

其他系统信息:Windows 7 (x64) prof,我还有 dpack 和 coderush express 插件。

0 投票
4 回答
429 浏览

silverlight - View 是否可以订阅 ViewModel CLR 事件?

有时视图模型需要发出通知,视图应该处理并做一些响应,尤其是。当这些不能被建模为属性和属性更改通知时。

MVVM Light 中的任何内容都可以允许视图侦听事件并通过声明性 Xaml 标记将视图模型通知转换为用户界面操作?

0 投票
5 回答
3021 浏览

silverlight - 将组合框上的选定值绑定到视图模型

我有我的 silverlight 应用程序,它可以将数据从视图模型中提取到数据网格中。vm 通过 Mef 公开。我还有一个包含组合框的详细信息网格。vm 还包含用于填充组合框值的数据。第一次加载时,一切正常,组合框上的选定项目是正确的,我可以选择替代值。但是,如果我对我的主数据网格进行排序(允许 sort=true),那么我会发现组合框上选定值的绑定消失了。组合框仍填充有数据,但未选择任何内容。

有没有人遇到过这个问题?我不确定如何解决这个问题。

谢谢

0 投票
1 回答
274 浏览

silverlight - 从 WPF 转换 Silverlight MVVM

我正在阅读这篇文章 - http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

我在文章附带的 WPF Demo 应用程序中遇到了这段代码。

此模板将 CustomerView 应用于主窗口中显示的 CustomerViewModel 类的实例。

我用尖括号代替了方括号 - 不知道如何发布它们。

代码位于 MainWindowResourses.xaml 中,代码从第 19 行开始。

任何人都知道我如何在 Silverlight 中做到这一点?我们没有 DataType,我需要能够告诉应用程序这个 View 与这个 ViewModel 相关联 - 所以我可以创建一个具有不同视图的选项卡控件,如演示应用程序。

干杯,

欧共体