首页 > 解决方案 > 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>

在母版页中,我有“主页”、“联系人”选项。

注意:如果我切换到另一个菜单项(“联系人”)并在菜单页面中选择“主页”,那么我的主页视图模型将被调用。

标签: xamarin.forms

解决方案


您直接HomePage从 XAML 创建一个对象。据我所知,Prism 无法拦截这一点,因此没有创建视图模型。您必须导航到该页面才能启用 Prism 自动解析 VM。我们通过调用加载我们的主视图

NavigationService.NavigateAsync("/MenuViewWrapper/NavigationRootPage/HomePage");

App.OnInitialized. 请注意MenuViewWrapper(这将是您的MainPage)和NavigationRootPage(在您的示例中可以替换为NavigationPage)必须注册导航(请参见此处)。


推荐阅读