问题标签 [viewmodellocator]
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.
mvvm-light - MvvmLight ViewmodelLocator StaticResource 停止加载
每当我使用 MVVM Light 时,我总是会遇到最奇怪的事情。我创建了一个 ViewModelLocator 并在 app.xaml 中注册为静态资源:
一切正常,这意味着在启动时静态资源已注册,我可以使用它,我可以通过转到
但随后突然、随机、永久地停止工作。每个项目都发生在我身上,但我还没有确定原因,因为我无法确定我为使其停止工作而采取的一致行动,也无法找到任何方法将其恢复到任何状态它工作的时候我有吗...
继续前进的唯一方法是在启动时手动注册资源,如下所示:
最后一切都重新开始工作,通常这就是它的结束。
但它每次都会发生。
我在定位器的构造函数中设置了一个断点,它肯定没有被击中......有人知道我可能做错了什么吗?
编辑:我终于找到了实际的异常:
GalaSoft.MvvmLight.Extras.DLL 中出现了“Microsoft.Practices.ServiceLocation.ActivationException”类型的第一次机会异常
这使我找到了我在下面发布的答案。谢谢!
mvvm-light - 在 Visual Studio 2015 中绑定到 MVVMLight ViewModelLocator 路径时,DataContext 为空
由于 Visual Studio 2015 处于 RC 状态,我不确定我是否发现了错误或者我的项目有问题。
我创建了一个带有 MVVM Light 的 Viewmodel Locator 并公开了返回每个 viewmodel 实例的静态属性。定位器在 app.xaml 中注册为静态资源。
通常我会在 Page Xaml 中用这样的一行来绑定它:
然而,虽然我在 VS2015 中尝试之前从未遇到过这个问题,但它不适用于我为 Windows 10 创建的新项目。
当我运行项目时,页面中的 DataContext 为空,即使它在 XAML 中明确分配,就像我在其他几十个项目中所做的那样。我检查并创建并初始化了 ViewModelLocator 静态资源,它的 MyViewModel 属性也包含我想要的 ViewModel。所以在 VM 或定位器中肯定没有空引用,但由于某种原因,将其绑定到页面的 DataContext 的 XAML 声明似乎被忽略了......
我在定位器中为 MyViewModel 的静态属性 getter 设置了一个断点,它从未被调用...
所以我不确定这是否是 VS2015、MVVM Light、Windows 10 SDK 或 Windows 10 本身的问题(当前版本 10162)......
有没有其他人遇到过这个问题?
c# - MVVM Light - ViewModelLocator,设置属性
您好,我需要有关 mvvm light 的帮助。
我想在我的构造函数中设置属性。但它只调用一次。我有一个 viewModel 和一个视图。我通过 ViewModelLocator 从另一个 viewModel 调用 viewModel。第一次,当我调用 viewModel 时一切正常,但是当我在其他时候调用 viewModel 时它不起作用,因为它是创建 viewModel 并且它的构造函数已经调用。我如何重置(或其他)viewModelLocator,以便每次我调用 viewModelLocator 时他都会调用构造函数。
在下面的代码中,我正在调用另一个 viewModel:
c# - 使用 ninject 作为 WPF 视图模式定位器 - 视图模型作为单例
我在 WPF 应用程序中使用 ninject 的内核作为视图模型定位器。
内核助手类:
并且ViewModelLocator
公开了如下Get
方法:
当需要实例时,它被称为:
但是,IoCKernel.Get<MainWindowViewModel>()
总是会返回一个新实例。有没有办法让它只适用于一个实例?
wpf - WPF - 使用行为来实例化视图模型和服务
我试图找到创建视图模型和服务的最佳实践(服务只是与服务器对话并将数据返回给视图模型)。我见过两种不同的方法。
- 使用视图模型定位器
- 使用行为(我不确定这是否是好方法)
对于第二种方法,您在 UserControl 上定义一个行为,并在附加事件上创建一个视图模型实例和一个服务实例并将它们放在一起。
并在您的用户控件 xaml
这是对行为的一种很好的利用,还是我应该只使用视图模型定位器模式。
wpf - 如何解决“..dictionary entry must have associated key”错误?
我已在我的 App.xaml 文件中添加了一个命名空间,以解析我在项目中的 ViewModelLocator.cs 位置。然后从 ResourceDictionary 中引用了 ns。但是当我添加这些时我得到了两个错误:
..Each dictionary entry must have an associated key.
'ViewModelLocator' does not exist in XML namespace 'clr-namespace:MongoDBApp.ViewModels;assembly=MongoDBApp'
我首先检查了名称空间对于 ViewModelLocator 的位置是否正确,即:namespace MongoDBApp.ViewModels
.
我还检查了 ResourceDictionary 中引用的语法,这似乎是正确的。此解决方案没有解决错误,我已经清理并重建了几次解决方案。
谁能建议如何解决此错误?
App.xml 文件的定义如下,ResourceDictionary 位于文件底部附近:
c# - 使用 Prism 6 中的 ViewModelLocator 解析分离程序集中的 ViewModel
我正在尝试将我的视图的 DataContexts 连接到来自另一个分离的程序集的视图模型。
Brian Lagunas在他的博客上写了一些关于Prism 的新 ViewModelLocator 入门的内容,但是,他的解决方案是专门定制约定以允许 ViewModelLocator 解析视图模型类型。
我的场景:
我有主项目(MyApplication.exe)包含引导程序、Shell 和视图在另一个分离的程序集(MyApplication.Process.dll)中我有所有的视图模型。
根据布赖恩的解释,我尝试了以下解决方案:
上面的解决方案可以正常工作,但是,我不知道这是否是最好的方法?
我想要的只是告诉 Prism ViewModelLocator 它必须在哪些程序集中找到视图模型,我的意思是与 Caliburn.Micro 相同的方法(在所有已注册的程序集中查找视图模型)。
例如,如果我的应用程序支持 Prism Modularity,如果程序集名称不以单词“ Process ”结尾,则上述解决方案将不起作用?
你对我有什么建议?
c# - 关于定位器的 WPF 数据绑定问题
这可能是一个愚蠢的问题,但我似乎无法弄清楚问题所在。
我有一个 WPF 项目,我想重命名它并着手进行 mercurial 重构。
总而言之,它似乎做得很好,唯一的问题是我的视图模型的数据上下文似乎搞砸了。
其中一个页面的示例是这样的
我得到的错误是 LocatorX 既不存在也不可访问。但是,我可以访问 ViewModel 的源代码以及定义 LocatorX 的位置,以便它知道它们并且 LocatorX 是公开的。
在重命名之前这一切都很好,所以它以某种方式链接到它
c# - 实现自己的 ViewModelLocator
我想自己实现 ViewModelLocator。所以我实现了世界上最简单的应用程序。我按照本教程进行了所有操作。但我仍然遇到一个例外:
发生 XamlParseException
抛出异常:PresentationFramework.dll 中的“System.Windows.Markup.XamlParseException”
附加信息:“在 'System.Windows.StaticResourceExtension' 上提供值引发异常。” 行号“8”和行位置“9”。
这是这一行:
这是代码:
应用程序.xaml
应用程序.xaml.cs
ViewModelLocator.cs
主窗口.xaml
MainWindowViewModel.cs
在这个答案中,我发现:
确保在使用之前定义资源(按 Xaml 解析顺序)。最简单的方法是将其放入 App.xaml
所以我在 App.xaml 中有它。如果有人能解释一下这里发生了什么?为什么我会收到此错误?
xaml - UWP + MvvmLight - 定义为 App.xaml 资源的 ViewModelLocator 在设计模式下返回访问被拒绝错误
我正在使用 MVVMLight 构建 UWP 应用程序,但在设计模式下我的 ViewModelLocator 有问题。
我创建了 ViewModelLocator:
然后我将其声明为 App 资源:
它现在应该可以工作了,我应该可以将 MainPageViewModel 定义为 MainPage DataContext 但 Intellisense 正在强调
有错误
访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
我注意到,当我不使用 ViewModelBase.IsInDesignModeStatic 属性时,它可以正常工作,我可以在 MainPage 中看到设计数据。像这样的工作:
你有什么想法来解决这个奇怪的问题吗?