Проект .NET MAUI по умолчанию разделяет определение графического интерфейса от программной логики. Например, файл MainPage.xaml определяет в виде кода XAML визуальный интерфейс страницы MainPage, а файл MainPage.xaml.cs хранит связанную с этой странице программную логику, в частности, обработчики событий элементов управления. И в принципе такой путь, при котором визуальный интерфейс определяется в XAML, а программная логика - в C#, является предпочтительным. Однако данный путь не единственный. .NET MAUI также позволяет создавать визуальный интерфейс также полностью с помощью кода C#, либо комбинируя XAML и C#.
Например, добавим в проект обычный класс на языке C#, который назовем StartPage.
И определим в этом классе следующее содержимое:
namespace HelloApp { class StartPage : ContentPage { public StartPage() { Content = new Label() { Text = "Hello METANIT.COM!" }; } } }
Данный класс представляет страницу, поэтому наследуется от класса ContentPage
. В конструкторе создается метка с текстом, которая задается в качестве содержимого
страницы (new Label() { Text = "Hello METANIT.COM!" }
). Чтобы задачть метку в качестве содержимого страницы, элемент Label присваивается свойству Content страницы.
Чтобы обозначить StartPage в качестве стартовой страницы, изменим класс App в файле App.xaml.cs:
namespace HelloApp; public partial class App : Application { public App() { InitializeComponent(); MainPage = new StartPage(); } }
Теперь свойство MainPage указывает на только что созданную страницу StartPage. Мы можем запустить проект и увидим на экране устройства текст метки.
Подобным образом мы можем лепить в коде C# и более сложные композиции элементов, однако скорее всего использование xaml для определения интерфейса многим покажется более удобным, чем код C#.
Также стоит отметить, что в Visual Studio есть готовый шаблон для добавления новых классов страниц с простейшим кодом. Так, чтобы добавить новую страницу, надо при добавлении нового элемента выбрать шаблон Content Page (C#):
Если нужно также добавить и файл xaml для страницы, то можно выбрыть другой шаблон - Content Page
При выборе шаблона Content Page (C#) добавленный класс страницы будет иметь следующий код:
namespace HelloApp { public class Page1 : ContentPage { public Page1() { Content = new StackLayout { Children = { new Label { Text = "Welcome to Xamarin.Forms!" } } }; } } }
Этот класс также будет наследоваться от базового класса ContentPage и будет иметь практически ту же самую организацию, что и выше созданный класс MainPage.
И также в классе приложения в файле App.xaml.cs мы можем установить эту страницу в качестве стартовой:
namespace HelloApp { public partial class App : Application { public App() { InitializeComponent(); MainPage = new Page1(); } } }