问题标签 [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.
c# - 未知类型 ViewModelLocator
我似乎用这个撞了一堵砖墙。
在将 Windows Phone 应用程序转换为通用应用程序时,我实现了 mvvm-light 的东西,就像我之前所做的那样。
但是,我现在确实在 App.xaml 中遇到了一个问题,它指出它找不到 ViewModelLocator。结果,我查看了 Laurent 的这篇博文以寻求指导,但没有任何运气。(http://blog.galasoft.ch/posts/2014/04/building-a-universal-application-for-windows-phone-8-1-and-windows-8-1-with-mvvm-light/)
我正在使用最新版本的 mvvm-light (4.4.32.1)。
如果我注释掉这一行:
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
它会毫无问题地构建和运行。一旦我取消注释该行,我就会收到错误:XML 命名空间'typename declaration'中的未知类型'ViewModelLocator'
我现在也突然收到以下错误:无法加载文件或程序集 'Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=619affe60327fc48' 或其依赖项之一。程序集版本有一个与请求不匹配的公钥令牌。
在项目中,我根据 NuGet 安装引用了 Microsoft.Practices.ServiceLocation 的 v 1.3 ...
c# - Windows Phone 8:如何使用 MVVM 为每个数据透视项目加载内容?
我在我的应用程序中使用 Pivot Control。我想通过远程 url 加载每个数据透视项目的内容(即使用 Web 服务)。
例如 - 我有一个详细的食谱数据透视页面。它有 3 个枢轴项目 - 信息、评论、画廊。系统托盘上有进度指示器。
我想加载每个数据透视项目的数据一次,即如果用户滑回先前加载的数据透视项目,那么它不应该再次对该数据透视项目发出 Web 请求,并且在这种情况下进度指示器应该是不可见的。
我应该为每个数据透视项目使用不同的 ViewModel 还是为所有项目使用单个 MainViewModel?
如何管理 Pivot 页面中进度指示器的可见性?
我应该为每个 Pivot 项目创建 UserControl 吗?
vb.net - PRISM 5:VB.NET 中的 ViewModelLocator,视图中无法实现 IView
我目前正在使用 MVVM 模式和 PRISM ViewModelLocator 在 VB.NET 中构建一个 PRISM 5 应用程序。PRISM ViewmodelLocator 需要所有视图来实现 Microsoft.Practises.Prism.Mvvm.IView 接口。这个接口只包含一个属性:DataContext。
由于 View(它是一个 FrameworkElement)已经具有属性 DataContext,在 c# 中,在 View 类名称后面添加“:IView”就足够了,而无需为 DataContext 属性提供新的实现(隐式接口实现)。神奇的是,ViewModel 然后通过 Datacontext 属性自动连接到 View。
在 VB.NET 中这是不可能的,因为您不能进行隐式接口实现。在类的顶部添加“Implements IView”时,VB 指示为 DataContext 属性提供一个实现。由于 FrameworkElement 已经有一个 Datacontext 属性,VB 会自动添加一个 Datacontext1 属性的实现。当然,将 ViewModel 连接到 View 是行不通的。下面是我的代码:
看法
视图模型
有没有围绕这个的最佳实践?
到目前为止,我发现似乎可行的只是将此行添加到我的视图的构造函数中:
但我发现这是一个非常肮脏的解决方案。
c# - 如何重新打开关闭的窗口?
ShutdownMode
我在我的应用程序中切换到,OnExplicitShutdown
所以当我关闭窗口时,我的应用程序仍在工作,我尝试像这样重新打开窗口:
但我有以下错误:Set property '...ViewModelLocator.AutoWireViewModel' threw an exception.
并且InnerException
是:'AutoWireViewModel' property was already registered by 'ViewModelLocator'
你知道如何解决这个问题吗?
我ViewModelLocator
从Microsoft.Prism
c# - WPF 和 SimpleMVVM:将新视图模型绑定到视图
请注意,此问题特定于 SimpleMVVM 及其 ViewModelLocator 的使用。
我有一个像这样的视图设置:
我的定位器将 CallViewModel 定义为:
在执行期间,我试图创建一个新的 CallUserControl 来使用,但是使用 Snoops,我可以看到 CallUserControl 的数据上下文没有绑定到视图模型(Snoops 中的数据上下文显示为空)。
通过代码,我可以看到 CallViewModel 正在创建并分配给定位器中的对象,但 UserControl 的数据上下文没有绑定到这个新创建的对象。
我正在创建新的 CallViewModel 如下:
你知道为什么这个新的 ViewModel 不会绑定到新的 Model 吗?是否有一些类似于 NotifyPropertyChanged 的机制,我必须从定位器调用以获取要绑定的对象?
c# - 使用 MVVMLight 在 ViewModel 之间传递参数
我在使用 MVVMLight 框架中的 Messenger 类在我的 ViewModel 之间传递参数时遇到问题。
这是我正在使用的代码:
视图模型定位器
主视图模型
第二视图模型
在我的MainViewModel
(ShowPersonDetailsCommand) 中,我正在导航到 SecondPage 并在 Messenger 类中发送一个人作为参数。在这一点上,这个人被很好地构建并作为消息发送。
但是在SecondViewModel
构造函数中,这个人是空的:(
有什么我想念的吗?
我觉得我做错了什么...
供您参考 :
Windows Phone 8.1 (Silverlight)
MVVMLight 5.0.2
视觉工作室 2013 更新 4
c# - XML 命名空间“clr-namespace:namespaceblabla;assembly=blabla”中的未知类型“ViewModelLocator”
我正在构建一个 Windows Phone 8.1 项目,并且我正在使用仅 MVVM Light Libraries 库。我创建了一个 PCL 项目来保存我的 ViewModel,以便以后可以将它们用于 Windows Store 项目。
但我得到标题中的错误?
我的应用程序.xaml
我在 Windows Phone 项目中引用了 Roadsmart.Lib。
我的 Lib 项目的属性
但是 Blend 能够找到我的 ViewModel 吗?
但我无法构建、运行。我也试过打扫。
有人知道我做错了什么吗?
提前致谢
c# - MVVM 轻应用程序 - 如何正确清理 ViewModels
我正在开发 WPF 中的食谱窗口应用程序,它由一个窗口和几个用户控件组成,这些用户控件使用来自 MVVM Light 的消息用 relayCommands 相互替换。
该应用程序使用从 entityFramework 生成的数据库。除了第一次执行文件之外,出现的问题是程序显示了许多警告和错误,例如:
在 ViewModelLocator 我有这个:
我用来切换 userControls 的消息也在创建 ViewModels 的新实例,例如:
我玩弄了 ViewModel 以使它们成为单例,以确保系统中只有单个副本,但 SimpleIoc 需要公共构造函数进行注册。而且我不知道这是否会帮助我解决问题。另外我没有告诉你的是 ViewModelLocator 仅在 xaml 中使用,所以我什至没有它的实例来清理这些东西。(我可能用错了,但我不知道应该怎么用)
问题是我不知道如何以及在哪里清理所有 ViewModel,因为它们是在我提到的许多地方创建的,其中一些可能保存 *.mdf 文件。
wpf - MVVM - 使用多个 ViewModel 重用视图
我相信 MVVM 的主要好处之一是解耦,绑定和缺乏引用使事情更加可重用。
我发现的所有 MVVM 示例都有某种带有 ViewModel 的 View,其名称ExampleView
与ExampleViewModel
. 并且始终是一对一的关系,一个视图,一个视图模型。
但是在我当前的项目中,我有一个要填写的表单,因此可以将数据添加到数据库中,用户也可以选择编辑数据库上的数据,因此这个表单 View 可以与两个不同的 ViewModel 透明地使用,一种用于添加数据,一种用于编辑数据。我发现复制和粘贴整个 View 只是为了让它以其 ViewModel 命名有点愚蠢,不仅如此,如果我需要更改某些东西,它总是必须加倍工作,并且可能会忘记一些东西。
一些框架有一个 ViewModel 定位器,它将使用相同的命名约定自动将 View 与 ViewModel 绑定,这让我质疑 View 与许多不同 ViewModel 的可重用性。
我的问题基本上是:将一个视图与不同的视图模型一起使用是否有问题?这是不好的做法吗?这种特殊情况是否有任何命名约定?
缺乏可重用性的例子让我质疑这种做法的有效性。
c# - 如何使用依赖注入构造函数注册一个类?(SimpleIoC)
我在我的项目中使用 MVVM Light,但我不确定如何在 ViewModelLocator 类中注册一个 Viewmodel 类,该类在其构造函数中带有一个参数。
我查看了IoC 上的文档,但没有看到任何与使用依赖注入构造函数注册类相关的内容,即带有参数的类。
在我要注册的类中,构造函数在它的参数中采用一个列表,如下所示:
但是当我导航到 ViewModel 类时,我得到一个 ActivationException,详细信息:
“Microsoft.Practices.ServiceLocation.ActivationException 未被用户代码处理 HResult=-2146233088 消息=无法注册:在 ViewSubjectGradeViewModel 中找到了多个构造函数,但没有一个用 PreferredConstructor 标记。来源=GalaSoft.MvvmLight.Extras StackTrace:在 GalaSoft.MvvmLight.Ioc.SimpleIoc .GetPreferredConstructorInfo(IEnumerable`1 constructorInfos, Type resolveTo) at GalaSoft.MvvmLight.Ioc.SimpleIoc.GetConstructorInfo(Type serviceType) at GalaSoft.MvvmLight.Ioc.SimpleIoc.Register[TClass](Boolean createInstanceImmediately) at GalaSoft.MvvmLight.Ioc.SimpleIoc .RegisterTClass 在 LC_Points.ViewModel.ViewModelLocator..ctor() 在 LC_Points.LC_Points_WindowsPhone_XamlTypeInfo.XamlTypeInfoProvider.Activate_0_ViewModelLocator() 在 LC_Points.LC_Points_WindowsPhone_XamlTypeInfo。XamlUserType.ActivateInstance() 内部异常:“
有谁知道如何解决此错误并指定“PreferredConstructor”?
错误本身在我注册 ViewModel 类的行中引发:
这是我的 ViewModelLocator 类,其中定义了 VM 的注册: