Tag: mvvm light

如何为Dialog服务MVVM Light编写测试用例

我是MVVM的新手,我正在关注MVVM Light工具包。 为了实现我搜索的消息框function并得到了这个例子 我不明白的是 我们应该通过inheritanceIDialogService创建类DialogService吗? 如果在inheritance接口之后在类中就是这种情况,我们需要编写类似下面的内容 public Task ShowMessage(string message, string title, string buttonConfirmText, string buttonCancelText, Action afterHideCallback) { //Here a kind of this implemetation i need to do ? //For example sake i didn’t include the parameters. MessageBox.Show(); } 如果视图模型中的上述情况属实,我们只会对话SERVSer.ShowMessage(prms ….)? 那么如何测试呢? 例如,如果它是filebrowser,如果我们在unit testing中按照这种方式调用它将会打开一个文件浏览器。 如何实现? 由于我非常喜欢这种模式本身,我发现很难理解。 请提供示例实现或任何参考。 编辑 我也提到了这个链接 。 在评论中,它被告知其对一个观点的责任。 我更困惑。 一般来说,至少对于确认对话框我们将如何做? 谢谢。

如何在WPF用户控件库项目中使用MVVM Light?

具体来说,我想知道如何将视图模型绑定到用户控件。 我到目前为止能够找到的示例都是WPF应用程序或WPF浏览器应用程序项目。 甚至工具包中的模板也适用于WPF应用程序或WPF浏览器应用程序项目。 我正在使用Visual Studio 2010。

WP7从Tombstone恢复并返回页面

有一种很好/优雅的方式可以回到用户从墓碑中恢复时所处的页面吗? 我不确定我的应用程序或它的工作方式,但我总是回到我的主页面。 我的应用程序设置了一个主页面,其中包含一个Pivot控件,并且几个Pivot项目将导航到新页面。 如果有意义,我的Naigation看起来像这样: PivotItem1 – > PageA PivotItem2 – > PageB – > PageC PivotItem3 – > PageD – > PageE – PageF(PageF上的按下后退按钮将使用NonLinear导航服务返回主页面) 因此,如果任何页面上的用户墓碑我想将它们返回到该页面并且可以使用BackStack,那么导航就不会搞砸了。 我正在使用MVVM Light和NonLinear导航服务,如果这有助于或伤害我正在努力实现的目标。

ViewModel在MVVM Light中不接收消息

我有两个ViewModel:MainViewModel和QuestionViewModel。 我在ViewModelLocator中注册它们。 SimpleIoc.Default.Register(); SimpleIoc.Default.Register(); 在MainViewModel上,我有一个带有问题的ListBox。 单击时执行此命令 NavigationService.NavigateTo(new Uri(“/Pages/QuestionPage.xaml”, UriKind.Relative)); Messenger.Default.Send(q); QuestionPage的DataContext设置为QuestionViewModel。 在QuestionViewModel上我注册消息: Messenger.Default.Register(this, q => { MessageBox.Show(“!”); }); 但是这个函数仅在第二次打开QuestionViewModel时起作用,因为QuestionViewModel实例仅在第一次打开时创建。 我的问题是:何时何地需要在MVVM Light中创建QuestionViewModel的实例? 我不想在启动时创建我的所有页面。 现在,我在构造函数ViewModelLocator中创建实例: public ViewModelLocator() { ServiceLocator.Current.GetInstance(); } 这是好习惯吗?

MvvmLight EventToCommand和WPFToolkit DataGrid双击

试图弄清楚如何使用EventToCommand为行设置datagrid双击处理程序。 该命令位于每行的viewmodel中。 我的经验就是这么多,因为我还没有使用过互动。 谢谢。 我会使用mvvmlight标签,但我还没有足够高的代表来制作新标签。

向DatePicker添加Blend行为的问题

我正在尝试向DatePicker控件添加Blend行为,以将MVVM-Light RelayCommand绑定到DateChanged事件,如下所示: 我使用以下定义: xmlns:Interactivity=”using:Microsoft.Xaml.Interactivity” xmlns:Core=”using:Microsoft.Xaml.Interactions.Core” 但是,我一直收到以下错误: WinRT information: Cannot add instance of type ‘Microsoft.Xaml.Interactions.Core.EventTriggerBehavior’ to a collection of type ‘Microsoft.Xaml.Interactivity.BehaviorCollection’. 我已经在我的项目中(以及在同一个Xaml文件中的其他控件)中以这种方式成功地使用Blend行为将事件绑定到命令,并且DatePicker控件是唯一抛出错误的控件。 有没有其他方法来实现这一点或WinRT DatePickers以这种方式受限?

如何处理MVVM中并行化任务的ObservableCollection 结果?

我在一个单独的Task中收集数据,我想使用ObservableCollection将数据绑定到GUI组件。 所以我的代码是这样的: private ObservableCollection _items; public ObservableCollection Items { get { return _items; } set { if (_items.Equals(value)) { return; } _items = value; RaisePropertyChanged(“Items”); } } private void LoadData() { Task task = Task.Factory.StartNew(() => { ObservableCollection itms = _htmlParser.FetchData(…); Dispatcher.CurrentDispatcher.Invoke((Action)delegate { Items = itms; }); }); } 从执行某些HTTP请求的组件中获取数据。 我得到的错误是: Must create DependencySource on […]

App.xaml中的错误试图在Windows Phone 8项目中使用MVVM Light

当我通过NuGet添加MVVM Light包时,我会在安装期间添加引用App.xaml文件中的行的错误。 这些错误仅出现在Windows Phone 8项目中。 Windows Phone 7项目中完全相同的行不会引发任何错误。 MVVM Light添加的行是: 这些行位于结束标记之前。 “错误列表”窗格中报告的错误是: 每个字典必须有一个关联的密钥 名称“ViewModelLocator”在命名空间“clr-namespace:sdkVoiceAlarmClockWP8CS.ViewModel”中不存在 这似乎有意义,因为标记没有键属性。 但是,如果我试图将这一行移动到外面 块,我得到一组全新的错误。 就ViewModelLocator问题而言,我进行了双重检查,并将以下命名空间作为属性添加到标记中,并且未标记任何错误: xmlns:vm=”clr-namespace:sdkVoiceAlarmClockWP8CS.ViewModel” mc:Ignorable=”d” 为什么这一组完全相同的行在Windows Phone 7项目中工作正常?如何修复我在Windows Phone 8项目中遇到的命名空间问题? 以防这是由于更复杂的问题,这里是整个App.xaml文件:

EventToCommand缺少Windows Phone应用程序

我正在使用MVVM Light构建Windows Phone 8应用程序。 到现在为止还挺好。 但是,当我使用EventToCommand时,我会遇到多个错误。 一个类似的问题是,在为SL5迁移到v4时,EventToCommand无法正常工作 ,但遗憾的是它无法解决我的问题。 它会自动添加以下参考: xmlns:command1=”http://www.galasoft.ch/mvvmlight” 我收到的错误: 命名空间“EventToCommand”在命名空间“clr-namespace:GalaSoft.MvvmLight.Command; assembly = GalaSoft.MvvmLight.WP8”中不存在 找不到类型’command:EventToCommand’。 validation您是否缺少程序集引用,并且已构建所有引用的程序集。 XML命名空间’clr-namespace中不存在标记’EventToCommand’:GalaSoft.MvvmLight.Command; assembly = GalaSoft.MvvmLight.WP8′ 如果我遗漏任何东西或做错事,请告诉我。 谢谢

WPF MVVM Light – 在工作完成之前显示通知

在我的MVVM Light应用程序中,我想在做一些需要两到三秒的同步工作之前显示通知。 我不希望用户在工作完成时做任何事情,因此不需要异步,任务和IProgress或后台工作者等。 在ViewModel中我有这个代码。 (请注意,这不是位于XAML文件的代码隐藏中,而是位于数据绑定ViewModel中) void MyCommand(Project project) { NavigationService.AddNotification(“Doin’ it”); GetTheJobDone(project); … } NavigationService将通知文本添加到客户端窗口顶部的数据绑定ListView。 我的问题是,无论花费多长时间,项目加载后都会显示“Doin’it”。 一个例子可能是我想加载并显示一个项目。 如果加载部分需要几秒钟,则界面会冻结,而不会向用户提供任何信息。 编辑 由于请求,我添加了一些代码。 这段代码工作正常。 显示通知的视图具有此XAML 保存通知的ViewModel具有此代码 public int AddNotification(string message) { … Notification note = new Notification { Message = message }; Notifications.Add(note); … }