首页 > 解决方案 > Xamarin.Forms:应用程序不在页面上显示元素

问题描述

我目前正在学习使用 Xamarin.Forms 和 C#(进入它的第一周),并且正在尝试创建一个基本的登录应用程序。
我从一个空白模板开始。现在,当我运行我的应用程序时,只会弹出基本屏幕,而不会弹出页面中的元素。怎么了?

应用程序.xaml.cs

using Xamarin.Forms;

namespace XamarinApp
{
    public partial class App : Application
    {
        public App()
        {
            InitializeComponent();

            new LoginPage();
        }

        protected override void OnStart()
        {
        }

        protected override void OnSleep()
        {
        }

        protected override void OnResume()
        {
        }
    }
}


登录页面.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XamarinApp.LoginPage">
    <ContentPage.Content>
        <StackLayout>
            <Label 
                Text="Welcome"
                />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

登录页面.xaml.cs

using Xamarin.Forms;

namespace XamarinApp
{
    public partial class LoginPage : ContentPage
    {
        public LoginPage()
        {
            InitializeComponent();
        }

    }
}

标签: c#xamarin.formsexecution

解决方案


TL-DR

我相信要解决您的问题,您需要更改线路:

new LoginPage();

到:

MainPage = new LoginPage();

我的推理

您需要指定它是什么MainPage。当您第一次开始时,这部分可能会让人感到困惑,因为提供的示例页面也被调用MainPage,但一个是class/Page实现,另一个关键部分是Application您的App类继承的类提供的属性。这样应用程序在运行时就知道它正在启动Page

通常,当您创建新的空白 Xamarin.Forms 应用时,您将在 App.xaml.cs 中看到以下代码

public App()
{
    InitializeComponent();

    MainPage = new MainPage();
}

我怀疑您在 LoginPage 中添加的更改以某种方式最终删除了关键部分:MainPage =从该行中删除。


推荐阅读