问题标签 [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.

0 投票
1 回答
102 浏览

unit-testing - 在 UWP/WinIot 核心中找不到 ViewModelLocator

App1 我有一个使用 ViewModelLocator 类(无 MVVMLight 或 Prism)的 UWP 应用程序。ViewModelLocator 作为资源集成在 App.xml 中,并在 View 的 DataContext 中使用。在发布和调试模式下运行此应用程序可以正常工作。

UnitTestApp1 我有一个 UnitTest 应用程序,它从上面引用了 App1。以发布模式运行单元测试时,所有测试都会运行。当我在调试模式下运行 UnitTests 时,出现错误:无法反序列化 XBF 元数据类型列表,因为在命名空间“App1.UI”中找不到“ViewModelLocator”。[行:0 位置:0]

自 Fall Creator 作为最小目标版本以来,此问题可用。我正在阅读 UWP 中的 ResourceDictionaries 没有任何代码,也没有直接初始化。这可能与此有关吗?

0 投票
0 回答
30 浏览

c# - 如何使用 wpf 在页面之间导航

我是 WPF 的新手,我想在 UWP 中的不同页面之间导航(感谢 ViewModelLocator)。我正在使用 mvvm 模式编程

使用 UWP 非常简单 =>

谢谢大家

编辑 为了解决这个问题,我使用这个链接 https://gallery.technet.microsoft.com/Simple-navigation-2be2ef4a 我刚刚使用 mvvmLight 并且差异很小

(我们可以关闭这个问题)

0 投票
1 回答
208 浏览

c# - 导航如何与 ViewModelLocator 一起使用?

我正在研究 ViewModelLocators 的概念,但只找到了处理一个主视图和一个主 ViewModel 的基本教程,这当然可以正常工作。

虽然我确实了解 ViewModelLocator 本身的概念是如何工作的,但我并不真正了解导航如何与它一起工作。我习惯于在对绑定 ViewModel 做出反应的视图中使用 DataTemplates - 当绑定的 ViewModel 更改时,会显示不同的视图。如何使用 ViewModelLocator 来完成?我找不到一个很好的教程示例来处理导航问题。

你们中的任何人都可以为我提供一个教程,这是如何工作的吗?我自己无法理解这一点。

0 投票
1 回答
1188 浏览

selenium - 当 HTML 元素不是 Select 类时,如何使用 selenium 中的断言验证下拉值

我有一个不是选择元素的 HTML 元素。所以我想使用软断言验证所有下拉列表。

这是我尝试过的代码,但它仅适用于选择 HTML 元素。

下面给出了 HTML 元素:-

我如何验证下拉值列表?

0 投票
1 回答
60 浏览

c# - 如何使用servicelocator wpf动态创建模型的多个实例

我在 mainwindow.cs 中有一个 tabcontrol。我想动态添加新选项卡,每个选项卡都有自己独特的视图模型实例。我已经设法为一个标签做到了。但是当我创建第二个时,它具有相同的模型实例。我正在使用 viewmodelLocator。这是我在 ViewModelLocator 中的代码:

我尝试用这段代码检索它。

RegisterViewModel registerViewModel = SimpleIoc.Default.GetInstance(key);

0 投票
2 回答
160 浏览

xamarin - 在 Prism.Forms 中使用 NavigateAsync 和已经存在的 ViewModel

场景:我有视图、视图模型和PickList模型PickLinePickListViewModel包含一个ObservableCollection<PickLineViewModel>,模型PickList包含一个List<PickLine>。我的PickList页面包含一个ListView绑定到的ObservableCollection<PickLineViewModel>,如果点击了一条线,NavigateAsync则调用它来导航到点击的 PickLine。

通常,当我调用NavigateAsyncPrism 时,导航到页面,定位视图模型,创建它的实例并将该实例绑定到视图。但在这种情况下,应该绑定到页面的视图模型实例已经存在(作为 my 的一个元素ObservableCollection),我不希望 Prism ViewModelLocator 创建一个新实例,因为它必须从 Web 服务获取数据,我尽量减少 Web 服务调用的数量。

我也不能在中使用模型,ObservableCollection因为视图模型包含仅用于 UI 目的的属性,所以这些属性绝对不应该是模型的一部分,但是我正在谈论的 UI 属性在PickList页面和PickLine页面。

Tl; dr:在 Prism.Forms 中是否有任何方法可以在导航到将绑定到它的页面时提供视图模型实例?

0 投票
0 回答
38 浏览

c# - 如何使用单独项目中的 MVC 视图?

在工作中,我有一个在 Web 窗体上运行的相当老的 Web 应用程序。它是用 VB .NET 编写的。

出于显而易见的原因,我试图摆脱 VB.NET 作为主要语言,因此我在解决方案中启动了另一个项目,使用 MVC 和 C# 作为语言。

我不能只将 MVC 添加到同一个项目中,因为我不能在同一个项目中混合语言(即使可以,我也不确定我是否愿意)。我的计划是让主 Web 项目依赖于 MVC 项目,但在启动时,让主项目引导 MVC 内容,设置路由,并将 MVC 项目中的任何“未找到”路由路由到 Web 窗体项目.

我知道我可以将我的 Razor 视图编译为代码,但这意味着当我在视图中进行更改并在应用程序运行时保存它们时,这些更改不会反映在正在运行的 Web 服务上。我必须重建才能看到我不想一遍又一遍地做的改变。

基于此,我似乎需要为视图引擎创建一个新的视图定位器,然后指定在哪里查找视图。唯一的问题是新的 MVC 项目在主项目旁边的文件夹中运行,所以我不能使用超出原始项目根目录的相对路径(如果我在旧项目中,我可以' t 只是制作视图位置~/../../newProject/Views/{1}/Partials/{0}.cshtml,因为它位于旧项目的根目录之上)

那么,如何创建一个视图定位器来定位单独项目中的视图?

0 投票
1 回答
609 浏览

xamarin.forms - 如何使用 PRISM 为 Xamarin 表单实现单例?

我正在使用 PRISM 库为 MVVM 架构开发 Xamarin.Forms。

所以,问题是每当我使用 INavigationService 在页面之间导航时,类/ViewModel 总是新实例化,因此已经分配的字符串变为空/null。我正在 App.Xaml.cs 中注册页面和 ViewModel,如下所示:

如何处理在整个应用程序工作期间不总是新实例化或只需要实例化一次。

0 投票
1 回答
756 浏览

wpf - ReactiveUI ViewModelViewHost 非常慢,与 HandyControl 一起使用时

你好,

大约 6 个月前,我开始使用 reactiveUI 并用它构建简单的应用程序

就在四个月前,我开始构建一个监控低级别网络的应用程序

因此,我在 C++ 中实现网络部分,然后在 C# 中构建 UI、数据库模型和逻辑

然后创建一个中间库来编组这个低级 API,

如您所知,此 API 将提供大量数据包。

因此,在 C# 中,我决定通常使用响应式 UI 和响应式编程来处理这些数据流

并且 Rx 完美运行,使用这个高性能反应系统为我节省了几天的工作时间

但是现在我有一个大问题:

当我浏览应用程序时,解析视图 / ViewModel 的初始时间非常长,大约1200-506 ms是平均水平,这会导致问题,因为这会使应用程序看起来像是被冻结了

  • 所以我尝试解决这个问题,或者解决它但没有任何帮助,

  • 我跟踪了响应式 UI 的大部分/所有指南,但似乎没有任何效果

另外,请注意描述的奇怪行为

在这个 StackOverflow 问题中:WhenActivated 被调用两次:并尝试该解决方案但不起作用。

所以我尝试实现我的自定义SimpleViewModelViewHost

SimpleViewModelViewHost.xaml

SimpleViewModelViewHost.xaml.cs

我知道这泄露了很多功能disposing of old view/viewModel .....

但是现在性能很好:现在只需要大约250-300 ms,但仍然一点也不好 因为人眼可以注意到这种延迟

所以现在我遇到了一个大问题,所以我在 ReactiveUI 中用空视图创建了另一个简单的应用程序

没有约束力

猜猜看:问题仍然存在

我使用 Visual Studio Profiler 来跟踪start of a constructor of ViewModel

和结束WhenActivated in the View

所以我的问题是:反应式团队是否意识到这个问题,或者只是我做错了什么,如果是,解决方案是什么

另请注意:

Creating我尝试通过实现一个名为的接口IHotReloadViewModel并实现一些逻辑来重用当前的 ViewModel 而不是替换它来提高复杂布局中的性能

并获得绩效from about 1350 ms -> 10 ms


片段

视图模型的一部分

View.xaml.cs 的一部分

大多数 Views/ViewModels 使用相同的结构


那么为什么我认为这是一个问题

因为我用 ViewModel-View Locator 的简单实现测试了相同的 UI,一切都立即运行

还使用带有DryIoC的Prism对其进行了测试,一切都立即生效 i work with it for a long time

所以知道有什么解决方案吗,或者我需要在当前的响应式 UI 应用程序中使用棱镜?

注意

  • 首先我没有在 Github 的 reactiveUI 问题中发布这个:因为我不想让问题面板溢出可能不必要的问题,所以我需要在这里确定这个问题是否存在于其他用户设备上,如果我将它报告给 reactiveUI团队

更新 (1)

在测试了多个应用程序后5 apps,我发现

更新 (2)

我在 ReactiveUI 存储库上创建了这个问题 谢谢。

0 投票
1 回答
85 浏览

c# - PRISM 通过每个导航请求创建新的 ViewModel?

我正在为 UWP 应用程序使用 Prism v6.3.0。我正在为 DI 使用 Unity Container。出现以下问题:每当我的应用程序导航到给定视图(例如 MainPage)时,似乎都会创建相应 ViewModel 的新实例。我想重用同一个虚拟机(基本上,只创建一次)。
我有:prismMvvm:ViewModelLocator.AutoWireViewModel="True"在所有页面的 XAML 中。
我的代码从不直接调用任何 VM 构造函数,所以不能这样。我还在 ConfigureContainer 覆盖中仅注册服务。

我尝试的是在 App.xaml.cs 中注册视图(似乎没有区别):


有什么提示吗?