#c# #xamarin.forms #execution
#c# #xamarin.forms #выполнение
Вопрос:
В настоящее время я учусь использовать Xamarin.Формы и 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();
}
}
}
Комментарии:
1. Попробуйте изменить
new LoginPage();
наthis.MainPage = new LoginPage();
2. @Bijington, что это за колдовство? Что было не так с моим кодом? Кроме того, у меня нет MainPage.xaml в моем коде. Почему мне все еще нужно использовать
this.MainPage
?3. вам нужно определить, что такое начальная страница.
MainPage
App
я подозреваю, что в вашем файле уже может быть что-тоApp.xaml
, что указывает на страницу.4. @Bijington, это мое приложение.xaml
5.
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();
}
Я подозреваю, что ваши изменения для добавления на вашу страницу входа каким-то образом привели к удалению ключевой части: MainPage =
из этой строки.
Комментарии:
1. Я все еще не понимаю, что
MainPage = new MainPage()
делает. Это выглядит какSystem.Int32 = new System.Int32()
, илиclassname = new classname()
. Разве это не должно бытьMainPage mainPage = new MainPage()
?2. Да, к сожалению, для целей этого вопроса класс и свойство имеют одно и то же имя.
MainPage
слева на самом деле находится свойство, а не тип. Это предоставляется вамApplication
классом, предоставленным Microsoft learn.microsoft.com/en-us/dotnet/api /…