xamarin.forms - ViewModel 没有在带有棱镜的 Xamarin 表单的主详细信息页面中第一次被调用
问题描述
我在我的应用程序中使用主详细信息页面。我在我的应用程序中使用了 Prism。
第一次没有调用我的详细信息页面视图模型,并且由于此页面显示为空。
<?xml version="1.0" encoding="UTF-8"?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:InforConcierge.Views"
x:Class="InforConcierge.Views.MainPage">
<MasterDetailPage.Master>
<local:LeftMenuPage x:Name="masterPage" Icon="home.png"/>
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<NavigationPage x:Name="NavPage" BarBackgroundColor="{DynamicResource appColor}" >
<x:Arguments>
<local:HomePage />
</x:Arguments>
</NavigationPage>
</MasterDetailPage.Detail>
在母版页中,我有“主页”、“联系人”选项。
注意:如果我切换到另一个菜单项(“联系人”)并在菜单页面中选择“主页”,那么我的主页视图模型将被调用。
解决方案
您直接HomePage
从 XAML 创建一个对象。据我所知,Prism 无法拦截这一点,因此没有创建视图模型。您必须导航到该页面才能启用 Prism 自动解析 VM。我们通过调用加载我们的主视图
NavigationService.NavigateAsync("/MenuViewWrapper/NavigationRootPage/HomePage");
从App.OnInitialized
. 请注意,MenuViewWrapper
(这将是您的MainPage
)和NavigationRootPage
(在您的示例中可以替换为NavigationPage
)必须注册导航(请参见此处)。
推荐阅读
- javascript - 如何将属性从反应组件传递给其父级?
- concatenation - 用MYSQL中多行的连接值更新新列
- mysql - macOS (BigSur) - 安装 MySQL ODBC 驱动程序以将 mysql db 连接到 Tableau
- android - Android-Kotlin:启动和停止任务循环执行的最佳方式,从结束后每隔几秒重复一次
- javascript - Javascript函数重新加载页面
- python - celery 没有检测到关闭的代理连接并在一段时间后冻结
- stm32 - 带有 DMA 的 STM32 I2C 传输已完成,但 DMA 中断程序不工作
- reactjs - 如何在 React TS 中为组件库创建声明文件?
- javascript - 我的 React 函数被调用了两次,第二次调用设置值不正确
- java - 为什么我得到 java.lang.NullPointerException?