Tag: delegatecommand

WPF CommandParameter绑定和canExecute

我有一个treeView项的模板: Add 作为DataContext,我有一个ID为非空字段的linq实体。 问题是:如果我使用CanExecutedMethod使用DelegateCommand’Add’: AddRate = new DelegateCommand(AddExecute,AddCanExecute); 它只调用一次,参数为null(而textBlock显示正确的ID值)。 在调用ID属性之前调用CanExecute(使用调试器检查)。 似乎在绑定到实际参数之前,wpf正在调用canExecute并忘记它。 绑定完成并加载适当的值后,它不会再次调用CanExecute。 作为一种解决方法,我可以使用只有执行委托的命令: Add = new DelegateCommand(AddExecute); 使用正确的ID值调用AddExecute并且工作正常。 但我仍然想使用CanExecutefunction。 有任何想法吗?

如何unit testing在MVVM中调用异步方法的DelegateCommand

我是unit testingMVVM的新手,在我的项目中使用PRISM。 我正在我们当前的项目上实现unit testing,而没有运气在线查找资源,这将告诉我如何调用异步方法的totest DelegateCommand。 这是我的post的后续问题 – 如何使用异步方法对ViewModel进行unit testing。 关于如何在MVVM中unit testing异步方法,并回答公共方法可以使用异步TestMethod进行测试。 仅当我要测试的方法是公共方法时,此方案才有效。 问题是我想测试我的DelegateCommand,因为这是我想要在其他类上公开的唯一公共细节,其他所有内容都是私有的。 我可以公开我的私人方法,但我永远不会这样做,因为它是一个糟糕的设计。 我不确定如何解决这个问题 – 是否需要对DelegateCommand进行测试,还是有其他一些工作? 我很想知道其他人如何去做,并以某种方式引导我走向正确的道路。 这是我的代码 async void GetTasksAsync() { this.SimpleTasks.Clear(); Func<IList> taskAction = () => { var result = this.dataService.GetTasks(); if (token.IsCancellationRequested) return null; return result; }; IsBusyTreeView = true; Task<IList> getTasksTask = Task<IList>.Factory.StartNew(taskAction, token); var l = await getTasksTask; // […]