Tag: prism

在ViewModel实体上使用DataAnnotation进行Prism IDataErrorInfovalidation

我正在使用Prism MVVM框架在WPF中实现数据validation。 我在ViewModel中使用干净的数据实体,这些实体被绑定到表示层。 我在基础ViewModel类中实现了IDataErrorInfo的通用实现,该类对我的Entity上的DataAnnotation属性运行validation(在本例中为User)。 问题是当绑定到实体时,WPF框架在实体上查找IDataErrorInfo而不是ViewModel,这是我希望这个逻辑存在的地方。 如果我用我的ViewModel中的属性包装我的实体,那么一切正常,但我不希望在ViewModel中妥协使用实体。 有没有办法告诉WPF在ViewModel中查找IDataErrorInfo而不是被绑定的子对象? 谢谢,迈克

如何在设计时在棱镜模块中使用资源字典?

我在一个silverlight应用程序中使用prism框架,在单独的XAP中有多个模块。 我在我的shell项目中定义了一个资源字典。 在我的模块中,我可以很好地使用资源,但由于模块与shell分离,直到它们在运行时加载,设计器不会显示它们或识别它们。 有没有办法让模块在设计时知道我的资源而不在每个视图xaml中合并我的资源文件? 我的资源文件位于“常见”项目中。

棱镜 – 跨区域数据绑定

可以说我有2个区域A和B. 地区A: HAHAHA B区: 这不起作用。 修复此问题的解决方法是什么,因此在区域B中还显示“HAHAHA”?

NSubstitute vs PRISM EventAggregator:断言调用方法会触发具有正确有效负载的事件

考虑以下方法,通过PRISM EventAggregator更新人员并发布事件,以指示此人已更新。 我想unit testing消息是否与正确的有效负载一起发送。 在这种情况下,这意味着正确的personId。 public void UpdatePerson(int personId) { // Do whatever it takes to update the person // … // Publish a message indicating that the person has been updated _eventAggregator .GetEvent() .Publish(new PersonUpdatedEventArgs { Info = new PersonInfo { Id = personId, UpdatedAt = DateTime.Now }; }); } 我知道我可以创建事件聚合器的替代品: var _eventAggregator = […]

prism:ViewModelLocator.AutoWireViewModel =“True”对于未引用的程序集不起作用

我在引导程序中加载我的模块: protected override IModuleCatalog CreateModuleCatalog() { var moduleCatalog = new DirectoryModuleCatalog(); moduleCatalog.ModulePath = @”.\Modules”; return moduleCatalog; } 在shell项目中引用模块的项目时,它可以正常工作。 正确的ViewModels将由以下附加属性注入。 <UserControl prism:ViewModelLocator.AutoWireViewModel="True" [..] 除非删除项目引用,否则棱镜将不再设置ViewModel:ViewModelLocator.AutoWireViewModel =“True”。 有谁知道是什么原因引起的? 您可以在项目https://github.com/mfe-/Get.the.solution.Prism.Demo上观察此行为。 我怎样才能解决这个问题?

使用Prism和MVVM Pattern在WPF中进行模态对话的“漂亮”方法

昨天我用谷歌找到了几种方法,用PRISM 4.1和MVVM模式在WPF中制作了一个非常棒的可重用modal dialog。 我发现了一些例子,但我必须说那些不像我喜欢它们那样“漂亮”。 这一个: WPFmodal dialog (没有mvvm – >没用) 这非常好: 在使用MVVM模式时显示Dialogs (但它仍然使用我不需要的自制ServiceLocator,因为我正在使用IUnity容器。我可以使用逻辑并将其重写为Unity但这不是“漂亮的” “我诚实的看法。 好吧,经过一段时间在网上搜索信息,一些博客(现在找不到源代码)告诉我,PRISM框架有一个叫做“交互请求”的东西。 所以我查看了prism文档并在“高级mvvm场景”主题下找到了一小部分,但文档中给出的信息还不够。 我想知道是否有人有任何好的例子或任何好的博客文章,关于如何用mvvm在prism wpf中实现一个很棒的modal dialog。 编辑 :关于评论中的问题: 是什么让模态对话变得棒极了? 确实是个好问题。 它必须是模态的(当对话框打开时,UI的其余部分应该被冻结) 对话框视图可以拥有自己的viewmodel,或者至少我想将对象的实例提供给对话框视图并将对象返回给父视图 视图应该是一个自己的“xaml”文件 .NET中的dialogresultfunction,或者至少是一种获取用户在对话框中单击的响应的方法

CanExecute Logic for DelegateCommand

更新:焦点变成MVVM而不是实际的问题所以我正在更新它。 我遇到了CanExecute for DelegateCommand的问题。 在我调用RaiseCanExecuteChanged之前它没有更新,这是否是所需的行为? 我在这里上传了一个简单的示例项目来重现这个问题: http : //dl.dropbox.com/u/39657172/DelegateCommandProblem.zip 问题是这个,我有两个像这样的Buttons 。 一个是绑定Command到一个RelayCommand实现,另一个是绑定到DelegateCommand的Prism实现 ViewModel ICommands DelegateSaveCommand = new DelegateCommand(Save, CanSaveDelegate); RelaySaveCommand = new RelayCommand(param => Save(), param => CanSaveRelay); 和CanExecute方法/谓词 public bool CanSaveDelegate() { return HasChanges; } public bool CanSaveRelay { get { return HasChanges; } } 两者都使用属性HasChanges 。 更新HasChanges ,只更新CanSaveRelay 。 这是它的意思吗?

如何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; // […]

BindableBase与INotifyChanged

有谁知道BindableBase是否仍然可行还是我们应该坚持使用INotifyChanged事件? 好像BindableBase很快就失去了光彩。 感谢您提供的任何信息。

棱镜组件参考失败:System.Windows.Interactivity

我有C#/ WPF Prism(v4.0)应用程序,它有一个持久的问题,加载/解析Prism库附带的System.Windows.Interactivity dll。 我已经连续工作了三天试图调试/解决这个问题。 我已经学会了很多关于.Net程序集的解决方案,但到目前为止我的问题没有运气,所以我想我会转而向StackOverflow社区寻求帮助。 🙂 我有一个模块作为更大的Prism应用程序的一部分运行,它需要引用System.Windows.Interactivity以添加行为。 因此,我有一个XAML用户控件指定命名空间,如下所示: 然后我尝试在UserControl的子元素上设置行为,如下所示: 奇怪的是,该项目构建正常,并且在关联代码隐藏文件中输入时, 我甚至可以在System.Windows.Interactivity命名空间中获取对象的Intellisense自动完成 。 但是, 仅在运行时 ,我在上面的ListBox元素上得到一个XamlParseException。 Could not load file or assembly ‘System.Windows.Interactivity, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified. InnerException的类型为System.IO.FileNotFoundException “Could not load file or assembly ‘System.Windows.Interactivity, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the […]