Xamarin.Forms:应用程序不在页面上显示元素

Posted

技术标签:

【中文标题】Xamarin.Forms:应用程序不在页面上显示元素【英文标题】:Xamarin.Forms: App does not show elements on the page 【发布时间】:2020-09-29 08:27:08 【问题描述】:

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

App.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()
        
        
    



LoginPage.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>

LoginPage.xaml.cs

using Xamarin.Forms;

namespace XamarinApp

    public partial class LoginPage : ContentPage
    
        public LoginPage()
        
            InitializeComponent();
        

    

【问题讨论】:

尝试将new LoginPage();更改为this.MainPage = new LoginPage(); @Bijington,这是什么魔法?我的代码有什么问题?另外,我的代码中没有 MainPage.xaml。为什么我还需要使用this.MainPage 您需要定义起始页是什么。 MainPageApp 的属性我怀疑您的 App.xaml 文件中可能已经存在指向页面的内容。 @Bijington, this 是我的 App.xaml new LoginPage(); 只是在内存中创建一个页面的新实例。如果你不将它分配给任何东西,那么它只会留在内存中,直到 GC 清理它。任何 C# 对象都是如此。 【参考方案1】:

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 =

【讨论】:

我还是不明白MainPage = new MainPage() 做了什么。它看起来像 System.Int32 = new System.Int32()classname = new classname()。不应该是MainPage mainPage = new MainPage()吗? 是的,就这个问题而言,令人沮丧的是,类和属性具有相同的名称。左边的MainPage 实际上是一个属性而不是一个类型。它由微软docs.microsoft.com/en-us/dotnet/api/…提供的Application类为你提供

以上是关于Xamarin.Forms:应用程序不在页面上显示元素的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms Webview html 视频不在 iOS 设备上播放

Xamarin.Forms - oxyplot 不在 CollectionView 内显示

Xamarin.Forms 警告:尝试使用 iOS 图像/手势识别器在其视图不在窗口层次结构中的 * 上呈现 *

Xamarin.Forms 页面底部到顶部动画

xamarin.forms.shell 框架中页面上视觉元素的生命周期

(Xamarin Forms)从“主页”导航到任何页面时如何显示工具栏?