问题标签 [prism-7]

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

mvvm - Prism 7 - 将 IContainer 对象注入视图模型

我最近有机会创建一个新的基于棱镜的应用程序。我使用 6.3 版本已经有一段时间了,但看到 prism 7 已经退出预发布版,想试一试。我使用 Prism 模板包创建了一个新的 prism 应用程序,并且开箱即用。我像通常在 6.3 中所做的那样更新了视图模型以传入容器,因此我可以解析一些稍后会向视图提供信息的对象,在 6.3 中我将执行以下操作:

现在在 7.1.0.431 中,我尝试做同样的事情,但更新了接口以考虑新的 IOC 抽象。

这会从 IContainerX 参数的 ViewModelLocator.AutoWireViewModel 生成一个异常。

这就像我缺少一个引用,但是我将该类型传递到应用程序的 RegisterTypes 调用中,因此应该找到所有引用。我对新的 7.X 版本做错了吗?

编辑:每@mnistic

下面是模板包中提供的 App.xaml.cs 中的代码,其中传入了 IContainerRegistry。

更新

再深入一点,传递给 RegisterTypes 的 IContainerRegistry 列出了调用该方法时可用的所有类型/接口。它注册了一个 IUnityContainer 实例。当我创建项目时,我为 IOC 选择了 Unity,但我可能错误地认为 IContainerRegistry 将客户端隐藏在实际实现中。如果我更新 ViewModel 构造函数以接收 IUnityContainer 的对象,它会正确解析。

这是期望的行为吗?

0 投票
1 回答
721 浏览

c# - 加载 Prism 7.1 窗口之前的用户弹出窗口 - 如何?

我正在使用 Prism 7.1 WPF 和 Prism Unity。

在主要<prism:PrismApplication/>运行之前,或者当主 Prism 窗口出现时,我希望有一个模式弹出窗口供用户输入一些数据。输入数据将用于用户登录,更重要的是,用于确定将哪些 Prism 模块加载到应用程序中。

我该怎么做呢?我曾尝试在以下PrismApplication重载方法中显示自定义 WPF 窗口,但该窗口没有出现,或者整个应用程序关闭:

例如,如果我在 CreateModuleCatalog() 中调用显示自定义 WPF 窗口,它将显示,但整个应用程序将关闭:

...如果我把调用放在 OnStartup() 中,它不会显示,直到所有其他覆盖都被执行并显示主 Prism 窗口(处理用户输入为时已晚):

我玩过不同的方法,改变了对基类方法的调用位置等,但似乎无法让它工作。谁能建议如何做到这一点?这样做的原因是,如果我不需要(基于用户输入),我不想将整个模块加载到应用程序中。谢谢....

0 投票
2 回答
1047 浏览

wpf - 如何将 ViewModel 中的命令绑定到 Behavior 中的命令?

WPF 项目 + Prism 7 +(纯 MVVM 模式)

TextBox很简单,当按下某个按钮时,我需要清除哪些(不违反 MVVM 模式)

视图模型

行为

问题是 ViewModel 中的命令始终为空(它没有绑定到 Behavior 中的命令),尽管我确保它是在行为类中初始化的。

注意:请不要建议将 File 属性设置为空字符串,因为这只是一个示例,在我的实际情况中,我需要选择所有文本,所以我真的需要访问AssociatedObject行为

0 投票
2 回答
651 浏览

wpf - 如何在 prism 7 中的 shell 之前显示登录屏幕?因为 app.xaml 中有 PrismApplication 而 app.xaml.cs 中没有 OnStartup() 方法

我想在我的 prism 应用程序(prism 7)中的 shell 之前显示登录屏幕,所以我不知道该怎么做,因为 app.xaml.cs 类文件中没有 OnStartup() 方法,我在引导程序之前显示登录窗口负载。以前在 prism 5 中进行登录时,我在引导程序之前打开了一个登录窗口。如果凭据正确,则加载引导程序。请帮帮我。

0 投票
0 回答
102 浏览

c# - 如何将 WPF 视图注入从 VSTO 插件 Prism 7 调用的窗口中

我正在使用 Prism 7 创建一个大型 WPF 桌面应用程序,我需要为 Word 和 Excel 创建几个 VSTO 加载项,这些加载项是较大整体的较小部分。我想使用 Prism 7 将我已经创建的视图和视图模型注入到 xaml 窗口中,单击功能区上的按钮时会显示该窗口。

我不知道在哪里初始化引导程序,因为我不熟悉 VSTO 加载项。

我已经创建了一个引导程序,它使用包含必要视图的正确模块配置模块目录。引导程序如下。

当我从 ThisAddIn.cs 文件初始化引导程序时,如下所示,引导程序正确地创建自己并配置模块目录。之后容器能够解析 RegionManager,但它也会自动向用户显示 MainWindow。

如果我打开 MainWindow 并单击应该将视图注入 MainWindow 的按钮,则视图被正确注入。但是,我显然不想在用户每次打开 Word 文档时自动显示一个空白窗口。有没有办法阻止引导程序此时显示 MainWindow 或者有更好的方法来解决这个问题?

0 投票
3 回答
505 浏览

c# - 在 WPF 中使用 Prism 7 加载应用程序时导航到默认视图

我遵循https://github.com/PrismLibrary/Prism-Samples-Wpf/blob/master/17-BasicRegionNavigation中提供的示例代码

我想在运行应用程序时获得以下结果(没有明确单击导航到视图 A)。有谁知道该怎么做? 期望的结果

我尝试在此行Navigate("ViewA");之后添加。但是,我无法得到想要的结果。是因为模块没有初始化吗?

谢谢。

0 投票
1 回答
2111 浏览

c# - Prism 7. 将 PrismApplication.CreateShell() 与非窗口控件一起使用

我想从 6.3 更新到 7。

我似乎遇到了障碍。

在 App.xaml 中使用 PrismApplication 类时,CreateShell 期望返回类型为 Window,而不是之前需要 DependencyObject 的 BootStrapper。

我的 MainShell 是一个修改过的 Telerik RadWindow,它本身就是一个修改过的 System.Windows.Controls.HeaderedContentControl,并且无法转换为 Window。

有没有办法解决这个问题,所以我可以使用 PrismApplication 对象,还是我必须像以前一样回滚并使用 BootStrapper?

0 投票
1 回答
421 浏览

wpf - 如何使用 Unity 容器在 Prism 7 中设置不同的生命周期管理器

在旧版本的 Prism 中,我可以从 UnityBootstrapper 类中做到这一点

当使用统一容器时,Prism 7 的此代码等效于什么?

0 投票
1 回答
438 浏览

uwp - Prism 7 UWP 导航返回参数丢失

给定一个具有三个视图和相应视图模型的 Prism 7 UWP 应用程序:

如果我们从 BlankPage1 导航到 BlankPage2 并传递一个参数(来自 ViewModel1 中的命令):

OnNavigatedToAsync重写BlankPage2ViewModel参数时正确传入。

BlankPage2ViewModel现在,如果我们从to导航BlankPage3ViewModel,通过一个命令并传递另一个参数

这再次起作用,参数值1234被传递给BlankPage3ViewModel.

但是,现在如果我们导航回BlankPage2ViewModel

await NavigationService.GoBackAsync();

OnNavigatedToAsync没有参数被传递回BlankPage2ViewModel. 我们当然希望看到参数值5678

注意:我们还设置NavigationCacheModeRequired每个视图内部。

对 MSDN 论坛上关于类似问题的问题的回答指出:

如果您使用 Frame.Navigate 导航到同一页面,则不会重新实例化您的 PageA,但将使用新参数调用 OnNavigatedTo 方法。

这样,您可以更改页面上显示的信息(如果需要,甚至可以播放一些过渡);作为额外的奖励,Frame 历史记录确实保留了您以前的 PageA 参数,允许您调用 Frame.GoBack 以返回到以前的 PageA状态。

这是 Prism 设计的,没有参数被传回还是潜在的错误?

0 投票
0 回答
164 浏览

xamarin.forms - NavigationService 在通过绝对导航到达那里后不会导航

我目前正在开发一个以和Xamarin.Forms为目标的应用UWP程序。iOSandroid

实现登录对话框后,我将登录用户导航到 a SomeContentPage,我现在希望将其包含在 a 中NavigationPage(可能稍后在 a 中MasterDetailPage)。

我正在尝试通过/对绝对导航路线使用 -prefix 来重置导航堆栈,这会将用户带到所需的页面并清除堆栈:

接下来,从此页面没有更多的相对导航可能:

似乎导航系统“内部”一切顺利(navigationResult.Successis true),但应用程序根本没有导航到AnotherContentPage

如果我在没有/-Prefix 的情况下导航,接下来的导航调用将按预期工作:

我真的很担心,我已经对此进行了非常努力的调查。

我不知道我是否只是没有正确理解 Prism.Forms NavigationService 概念中的某些内容,或者我是否在这里尝试了一些不可能的事情。

我重新阅读了Prism.Forms文档,观看了几个 YouTube 教程并阅读了许多关于Prism.Forms.

我现在快要绝望了。

我真的很难过问这个问题,我现在真的在质疑我的互联网研究技能,但如果你们中的某个人能给我一些建议,如何处理这个问题,那就太好了。

提前致谢,祝您有美好的一天!