Tag: mvvm light

访问MVVM Light中其他ViewModel中的属性

我有一个主ViewModel其中包含我在一定数量的UserControls使用的项目列表,这些项目显示在主视图的ContentControl 。 我目前在ViewModels之间交换数据的方式是对主ViewModel中的每个ViewModel以及每个UserControl中的一个主ViewModel进行引用。 但是我不知道这是否是正确的方法,因为我有一个ViewModelLocator ,我希望这个类有一些function来支持这样的事情。 任何人都可以告诉我,如果我正在做这件事,或者在MVVM Light中有更好的方法吗? 编辑: 当我在寻找不同的东西时,我发现了这个,这会是一个更好的解决方案吗? private ViewModelLocator locator = new ViewModelLocator(); 然后使用定位器属性来引用每个ViewModel? EDIT2: 显然我认为可以工作的不是,起初我只在主ViewModel有引用,这很有用,但是当我在UserControls尝试这个时,它会崩溃我的应用程序。 我正在尝试第一次编辑的可能解决方案。 MainViewModel.cs(其他类似,仅参考主ViewModel) public class MainViewModel : ViewModelBase { private ItemAddViewModel itemAddViewModel; private ItemsViewModel itemsViewModel; /// /// Initializes a new instance of the MainViewModel class. /// public MainViewModel() { ItemsList = Item.GetItemsList(); itemAddViewModel = ServiceLocator.Current.GetInstance(); itemsViewModel = ServiceLocator.Current.GetInstance(); […]

MVVM SimpleIoc,当接口实现需要构造参数时如何使用接口

使用MVVM的SimpleIoc,我想为给定的接口注册一个实现,但实现需要在其构造函数中有一个参数: public class MyServiceImplementation : IMyService { public MyServiceImplementation(string contructorString) { … } } 我希望注册接口的实现会起作用,但SimpleIoc在尝试解析接口时不考虑提示。 SimpleIoc.Default.Register(() => { return new MyServiceImplementation(“Hello World”); }); SimpleIoc.Default.Register(); 有没有办法用SimpleIoc做到这一点,或者我应该考虑使用更完整的Ioc? 编辑:这样做的伎俩,但我仍然想知道为什么上面的表格不起作用。 SimpleIoc.Default.Register(() => { return new MyServiceImplementation(“Hello World”); });

添加项目时,ObservableCollection setter不会触发

我正在使用MVVM Light框架在WPF中开发一个项目。 我有一个绑定到ObservableCollection的DataGrid 。 截至目前,当我添加一个新项目时, DataGrid不会更新,我相信这是因为setter永远不会触发。 public ObservableCollection MasterWorkerList { get { return _masterWorkerList; } set { System.Windows.MessageBox.Show(“Firing”); _masterWorkerList = value; RaisePropertyChanged(() => MasterWorkerList); } } 即使我打电话给它,消息框也不会显示: DataManager.Data.MasterWorkerList.Add(_create.NewWorker()); 如何RaisePropertyChanged以便我可以更新UI? 我尝试使用这篇文章中的解决方案无济于事: ObservableCollection没有注意到它中的Item何时发生变化(即使使用INotifyPropertyChanged) 任何意见,将不胜感激。 如果您需要更多我的代码,请告诉我。

如何将RelayCommand与MVVM Light框架一起使用

我刚刚开始学习MVVM Light框架,但我找不到任何关于如何使用RelayCommand的简单示例。 出于学习的目的,我只想在我的视图中有一个按钮,当点击时显示一个hello world world消息框,并且每隔一分钟启用一次(基本上如果DateTime.Now.Minute%2 == 0) 。 按钮XAML如何显示以及如何在ViewModel中定义RelayCommand HelloWorld? 谢谢你的帮助!!

MVVM-如何在文本框中选择文本?

是否有MVVM方式在文本框中选择文本? 我使用的MVVM框架是Laurent Bugnion的MVVM Light Toolkit。

一个超级简单的MVVM-Light WP7样本?

我正在寻找一个样本,以最轻微的方式演示以下内容: 一个调用基于SOAP的Web服务的模型; 定期轮询以获取最新值(假设SOAP服务返回一个布尔值)。 该模型还应支持调用更改服务器上布尔值的SOAP方法。 一个ViewModel,它允许底层布尔值绑定到View中的控件(例如,复选框)。 具有上述复选框控件的视图绑定到基础布尔值。 根据轮询间隔,复选框将随服务器状态的变化而更新。 如果单击该复选框,则会将事件分派给模型,从而导致服务器更新。 最好这个样本可以在Windows Phone 7上运行,但是在紧要关头我会对支持SL3的东西感到满意(不允许使用SL4命令路由)。 我正在努力了解如何让MVVM-Light为我工作,我怀疑专家可以很快地编写样本代码…我也怀疑这是很多应用程序的相当常见的模式。

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

我正在构建一个基于MVVM-Light的应用程序。 我需要创建同一个View的多个实例,每个实例都应绑定到自己的ViewModel。 默认的ViewModelLocator将ViewModelLocator实现为单例,因此同一View的不同实例将绑定到同一ViewModel。 我可以在VMLocator中创建ViewModel作为非静态对象(就像返回新VM()…一样简单),但这只会对我有所帮助。 事实上,我仍然需要跟踪打开的窗口。 然而,每个窗口可能会打开其他几个窗口(不同类型)。 在这种情况下,我可能需要在父View及其所有子项上执行一些操作。 例如,在关闭View P之前,我可能想要关闭它的所有子节点(视图C1,视图C2等)。 因此,有没有简单易行的方法来实现这一目标? 或者你有什么建议我遵循的最佳做法? 提前感谢您的宝贵帮助。 干杯, 赞布罗塔。

使用MVVM Light的Messenger在视图模型之间传递值

有人可以帮我解释一下MVVM Light的Messenger吗? 我在这里阅读StackOverflow上的一篇文章: MVVM在视图模型之间传递值,试图得到它。 关于MVVM Light的文档在这一点上并不是很好,所以我完全不确定去哪里。 假设我有两个ViewModel和一个ViewModelLocator。 我希望能够在没有问题的情况下在所有三个之间传递参数。 我将如何使用信使进行此操作? 它有能力吗? 编辑:这是我的新实现。 截至目前,看起来好像MessengerInstance不会调用令牌。 我非常困惑。 在第一个ViewModel中: MessengerInstance.Send(SelectedDocument); 在第二个: MessengerInstance.Register(this, xdoc => CopySettings(xdoc)); 可能完全错了。 没有机会测试它,但当我这样做时,视觉工作室对我不那么生气。 在发送消息之前,MessengerInstance也会进行注册。

MVVM Light 5.0:如何使用导航服务

在最新版本的MVVM Light note中 ,已经表明MVVM Light现在提供了“导航服务”。 但我和我的朋友谷歌无法找到如何使用它。 我可以看到我可以向ServiceLocator请求一个INavigationService ,所以我看到我可以要求转到另一个页面,但是: 我创建了一个新的窗口,我希望为“页面”保留一个特定的区域,我该如何指定? 如何指定所有可用页面? 有什么我应该打电话的吗? 给INavigationService的参数格式是什么 这个图书馆有官方文件吗? 因为目前我发现它很好地编码并且工作正常,但是当我要搜索如何使用它时,我从来没有找到如何使用的文档/示例,除了他的博客有一些条目。 这非常令人沮丧。 我找到的唯一文件就是这个 ,我对Pluralsight不太熟悉,但似乎必须每月订阅一次(作为个人,试图在我的空闲时间申请,是不可能的)。

MVVM Light&WPF – 将Window的多个实例绑定到ViewModel

我正在研究MVVM中的第一个项目,我选择使用MVVM Light Toolkit。 我有一个GameViewModel ,可以在我的游戏主屏幕上处理业务。 我需要找到如何在执行命令时将Adventurer实例作为参数打开一个新窗口( AdventurerView ),将其绑定到AdventurerViewModel ,以及显示和返回数据。 此窗口的实例将经常打开和关闭。 我已经被困在这几天了,这让我发疯了。 我想学习如何以MVVM友好的方式执行此操作,最好使用MVVM Light或纯XAML提供的工具。 我尝试过使用MVVM Light的ViewModelLocator但是因为AdventurerView是一个窗口它不起作用; 虽然该程序仍在编译和运行,但它说“不能把窗口放在一个样式中”。 我可以做些什么改变才能做到这一点? 或者是否有另一种方法在XAML中绑定它们? 或完全是另一种方法? 我真的很想能够继续前进。 我也尝试过使用MVVM Light的信使无效(但仍未解决View / ViewModel问题)。 我只需要能够创建一个绑定到AdventurerViewModel的窗口并显示/返回相应的数据。 AdventurerView.xaml目前处于默认状态,但我觉得如果我可以绑定可能有用的相应数据(DataContext)。 AdventurerViewModel也很简单 class AdventurerViewModel : ViewModelBase { #region Members private Adventurer _adv; #endregion #region Properties public Adventurer Adv { get { return _adv; } set { _adv = value; } […]