问题标签 [prism-6]

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 回答
181 浏览

android - Xamarin.Forms、Prism.Forms、Android Lolliop 5.1.1、导航过渡/动画

在 Android 5.1.1 (Lollipop) 设备上将 Xamarin.Forms 与 Prism.Forms (Unity) 结合使用时出现问题。

具体来说,如果我使用“动画:真”导航到/从表单,这些表单之后并不总是正常工作 - 具体来说,表单并不总是响应 PropertyChanged 事件而更新。这些表单在 Android 6.0 和 7.1(我唯一可用于测试的其他设备)上完美运行。

如果我将所有对 INavigationService.NavigateAsync 的调用更改为“动画”为假,那么只要我不使用硬件“后退”按钮退出表单(因为这会再次动画),这些表单就会正常运行。我什至创建了一个覆盖“UnityPageNavigationService”的覆盖,它覆盖了调用“DoPop”、“DoPush”和“GoBackAsync”时的“动画”参数(我很确定 NavigateAsync 方法最终会为所有要求调用其中之一,除了在更改 MasterDetailPage 的内容的情况下)。

我很确定这是一个 Xamarin 问题而不是 Prism 问题,因为查看了 GitHub 上的代码,在我看来 Prism INavigationService 实现最终会回到 Page.Navigation.PushAsync(...) 等方法而且我也很确定 Prism 导航服务没有拦截后退按钮并与之交互。

  • 当硬件后退按钮启动导航时,有什么方法可以禁用动画?

  • 有没有办法覆盖平台的 INavigation 实现(在这种情况下显然是 Android)?

  • Lollipop 5.1.1 上的 Xamarin Forms 是否存在已知问题和/或解决方法?

我正在使用 Xamarin Forms 2.3.4.231、Prism.Forms 6.3 和 Prism.Unity.Forms 6.3。

0 投票
1 回答
1033 浏览

c# - Prism 6 添加认证登录窗口和主窗口

我用 Prism 6 创建了 WPF C# 项目,

我的项目基于

https://github.com/PrismLibrary/Prism-Samples-Wpf/tree/master/17-BasicRegionNavigation

我想为其添加身份验证:),只需简单的登录注销...

我有MainWindowLoginView(两个窗口)我的Bootstraper.cs


和我LoginView的登录按钮:

如果有另一种方法来处理 MVVM 中的身份验证?

0 投票
2 回答
942 浏览

performance - Xamarin 表单、棱镜表单和 IoC

我有一个最初使用 Prism 和 Unity 开发的 Xamarin Forms 应用程序。我发现 Unity 在第一次解析对象时相当慢,尽管一旦第一次通过了相同对象类型的所有后续解析,速度就会明显更快。

基于我在另一个线程上收到的一些不相关的建议,我决定尝试从 Unity 切换到 DryIoc。不幸的是,我发现在解析对象时这会更慢,但在随后解析那些相同对象类型的新实例时速度没有提高。

所以,我的问题是,我可以用这两个容器做些什么来提高性能?例如...

  • Unity 中是否有任何东西可以让我预先配置可能创建的对象,以便第一个分辨率与后续分辨率一样快?
  • 我可以用 DryIoc 做些什么来加快所有对象的分辨率?

作为参考,我自己对每个的用法都很简单;我正在使用我RegisterInstance的大部分对象(设置、数据库等)并通过构造函数将它们注入到我的 ViewModel 对象中。Forms 和 ViewModel 对象本身都是使用 PrismRegisterTypeForNavigation扩展方法注册的

0 投票
2 回答
1373 浏览

c# - 使用 Prism 导航时如何处理视图?

我正在尝试使用 Prism,并创建了一个简单的应用程序,该应用程序由一个带有 Prism 区域的主窗口以及两个“子”视图(和 VM)组成。这些子视图中的每一个都有一个按钮,单击它只是导航到另一个视图,例如:

子视图和视图模型实现IDisposable,并且在我的 DI 容器中被赋予了“瞬态”生命周期。此外,视图实现IRegionMemberLifetime(KeepAlive = false)。

尽管如此,视图并没有得到处理(直到我关闭应用程序)。我错过了什么?当我离开视图时如何处理它?

或者将子视图注册为单例并在我导航到它们时初始化它们会更简单吗?

0 投票
1 回答
687 浏览

c# - 棱镜: ViewModelLocator 创建视图模型实例,但我如何定位它?

有没有一种方法可以在打开它的相应窗口时识别由 prism 的 ViewModelLocator 创建的 ChildViewModel 实例?

我想触发 ChildViewModel 应该加载它的数据,基于来自 MasterViewModel 的参数。

在代码中,inMasterViewModel有一个ICommandin a,负责通过发布事件请求打开一个新的子窗口,并且有一个对应的订阅者。

请注意,他们MasterViewModel对 UI 实现一无所知。

订阅者在自定义上调用ShowWindow方法,该方法WindowManager基本上解析了与传入的 ViewModel 对应的视图(在本例中为窗口)。

适当的窗口的 xaml

0 投票
1 回答
275 浏览

c# - 为 Prism 创建 LightInject Bootstrapper,缺少区域适配器的注册

我正在尝试为 Prism 创建一个 LightInject 引导程序,我复制了NinjectBootstrapper( source ) 的代码并将 Ninject 替换IKernel为 LightInject IServiceContainer。我还创建并注册了一个LightInjectServiceLocatorAdapterNinject 版本)。

注册和服务定位器适配器正在工作。我看到该类RegionAdapterMappings已从服务定位器中成功检索。

在引导程序的步骤中,从服务定位器请求ConfigureRegionAdapterMappings一个类的实例。SelectorRegionAdapter这失败了。该课程从未注册过。我在NinjectBootstrapper. 那么 Ninject 引导程序是如何检索这个类的呢?

我已经尝试手动注册该类(以及更多的区域适配器和DelayedRegionCreationBehavior),但随后 Prism 失败并出现UpdateRegionsException

我找不到任何处理创建添加自己的 DI 容器的来源,我不知道我错过了哪一步。我究竟做错了什么?

ServiceContainer像这样配置我的(Ninject 等价的ConfigureKernel方法)。

0 投票
1 回答
2010 浏览

wpf - Prism 6 区域管理器 RequestNavigate 无法导航某些区域

我有一个用户控件,其中定义了多个用于注入视图的 Prism 区域。我决定使用 Prism 视图导航来处理基于用户操作(如下所示)切换我的“SelectedMenuContentRegion”,但我遇到了问题。我确定问题出在我的用法上,但我无法弄清楚我做错了什么。我有以下包含自定义 WPF 控件的用户控件。

定义了 3 个区域。如果我做标准

但是,如果我为导航注册视图,它可以按预期工作,如下所示:

然后尝试稍后导航

它失败。我在调试器中注意到区域管理器的区域列表中只有“ApplicationOverlay”区域。因此,我将导航到的区域更改为 ApplicationOverlay 区域作为测试,并且它起作用了。我通过依赖注入获得区域管理器。关于为什么区域经理不知道其他定义的区域的任何线索?

更新 由于需要更详细的信息,我创建了一个小的独立示例来显示失败的导航。 棱镜导航示例

0 投票
0 回答
575 浏览

xamarin.forms - Prism for Xamarin Forms Absolute Navigation with URI 在 Windows 8.1 中无法正常工作

我正在使用 Xamarin.Forms 2.3.3.193 和 Prism.Forms 6.3.0使用绝对 URI 导航时,我的应用在Windows 8.1中崩溃

请参阅下面我的应用程序导航流程。

1 - 应用程序.xaml.cs

2 - 登录页面视图模型

3 - OTPPageViewModel

当我在 OTP 验证后尝试导航到主页时,我的应用程序在 OTPPageViewModel 中崩溃。

请注意,相同的代码在 Android 和 UWP 中运行没有任何问题,但仅在 Windows 8.1 中崩溃

如果我使用

该应用程序运行良好,但我能够导航回我必须限制的 OTPpage。

如果我跳过 OTPPage 并直接从登录页面调用 HomePage,如下所示,它工作正常。

4 - 登录页面视图模型

0 投票
1 回答
459 浏览

c# - 如何使用 Prism 6 在 WPF 应用程序中设置两个内容区域

我有一个场景。我正在使用 Prism 6.0 编写一个 WPF 应用程序,我想首先弹出一个子窗口,该窗口将具有用于三种不同 UI 设计的三个按钮。类似这样。 在此处输入图像描述

根据选择,我将更新MainWindowViewModel并关闭子窗口,并显示MainWindow.

直到这部分很好。但问题出在这部分之后,三个不同的按钮指向了三种不同的UI设计。特别是 ContentRegion1 和 ContentRegion2。这两个地区是不同的。

我已经看到,如果我通过 Button 输入命令,那么此代码将成功运行。但是如果我把它放进去,同样的也不会运行MainWindowViewModel

MainWindow看起来像这样......

在此处输入图像描述

ContentRegion1 和 ContentRegion2 是 XAML 中这样设计的两个

但是,我无法弄清楚我做错了什么,或者我需要在代码中添加什么额外的东西才能使其工作。

即使在 BootStrapper.cs 我也有这个代码

引导程序代码:

任何人都可以在这方面提供帮助。

0 投票
1 回答
258 浏览

xamarin - Xamarin 表单视图不会随自定义类更新

我在这个项目中使用 Prism.Unity.Forms 和 Xamarin。Client.Id属性更改时如何更新视图?当我将 XAML 从{Binding Client.Id}(一个 Guid 对象)更改为{Binding Client.Name}(一个字符串)时,视图会更新。

这有效

这不

我知道该ToString方法正在Client.Id属性上被调用,因为我将它包装Guid在一个自定义类中并覆盖了该ToString方法,但视图仍然没有更新。