Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Важно!
Этот проект является экспериментальным выпуском. Мы надеемся, что вы опробуете экспериментальные мобильные привязки Blazor и оставить отзыв по адресу https://github.com/xamarin/MobileBlazorBindings.
Примечание
Эта страница является продолжением пошагового руководства По созданию первого приложения . Прежде чем продолжить, рекомендуется выполнить это пошаговое руководство.
Давайте рассмотрим первоначальный проект, созданный в предыдущем пошаговом руководстве, чтобы понять, как использовать экспериментальные мобильные привязки Blazor.
Main проектом для просмотра является общий проект, содержащий .razor файлы. Проекты Android и iOS не содержат код, характерный для экспериментальных привязок Blazor для мобильных устройств.
Ниже приведены файлы в общем проекте:
-
_Imports.razor— содержит общие директивы, применяемые ко всем остальным.razorфайлам в этой папке и ее вложенных папках. Вложенные папки могут содержать собственные_Imports.razorфайлы с дополнительными директивами. Наиболее распространенным типом директивы в этом файле является директива@using, которая используется для импорта пространства имен в.razorфайлы, точно так же, как оператор C#using. -
App.cs— содержит точку входа main пользовательского интерфейса приложения, представленную классом, производным отXamarin.Forms.Applicationбазового класса. Конструктор этого класса создает экземпляр универсального узла, добавляет службы к узлу (в проекте по умолчанию нет), а затем использует узел для добавления компонента Blazor с именемHelloWorldв элемент приложения (this). -
Counter.razor— содержит компонент Blazor с именемCounter. -
HelloWorld.razor— содержит компонент Blazor с именемHelloWorld.
Давайте рассмотрим два компонента Blazor, чтобы узнать, как они работают.
Компонент Counter Blazor
Этот компонент содержит два раздела:
Разметка, определяющая элементы пользовательского интерфейса и связанные с ними свойства и обработчики событий:
<Frame CornerRadius="10" BackgroundColor="Color.LightBlue"> <StackLayout Orientation="StackOrientation.Horizontal" HorizontalOptions="LayoutOptions.Center"> <Button Text="Increment" OnClick="IncrementCount" /> <Label Text="@("The button was clicked " + count + " times")" FontAttributes="FontAttributes.Bold" VerticalTextAlignment="TextAlignment.Center" /> </StackLayout> </Frame>Html-подобные теги представляют компоненты пользовательского интерфейса, соответствующие компонентам Xamarin.Forms, а также их свойствам и событиям. Некоторые свойства имеют вычисляемые значения, например
Labelсвойство компонентаText, для которого задано значение, вычисленное кодом C#, которое обозначается блоком выражений@( ... ).При запуске обработчика событий, например
Buttonсобытия компонентаOnClick, компонент автоматически повторно отрисовывается, что позволяет пользовательскому интерфейсу обновляться без дополнительной логики. Более сложные сценарии могут управлять тем, какие компоненты будут повторно отображаться и когда.Код, реализующий обработчики событий или другие функциональные возможности компонента, заключенный
@code { ... }в блок:int count; void IncrementCount() { count++; }Этот код увеличивает
countзначение поля, которое также используется в качестве вычисляемогоLabelзначения свойства компонентаText. После запуска обработчикаIncrementCount()событий при повторной отрисовкиcountпользовательского интерфейса будет использоваться новое значение .
Компонент HelloWorld Blazor
Компонент HelloWorld содержит только разметку:
<ContentView>
<StackLayout Margin="new Thickness(20)">
<Label Text="Hello, World!"
FontSize="40" />
<Counter />
</StackLayout>
</ContentView>
Обратите внимание, что на Counter компонент ссылается этот компонент, ссылаясь на него как на тег <Counter />.
Каждый компонент Blazor компилируется в класс с тем же именем, что и файл. Пространство имен — это корневое пространство имен проекта, а также имена папок , если таковые есть, разделенные точками (.). На тип может ссылаться другой код C# через имя типа (не общее) или в .razor файле, используя его в качестве тега.