Olá, Mundo - como funciona?
Importante
Este projeto é uma versão experimental. Esperamos que você experimente associações blazor móveis experimentais e forneça comentários em https://github.com/xamarin/MobileBlazorBindings.
Observação
Esta página é uma continuação do passo a passo Criar seu primeiro aplicativo . Recomendamos que você conclua esse passo a passo antes de continuar.
Vamos dar uma olhada no projeto inicial que foi criado no passo a passo anterior para entender mais sobre como usar associações blazor móveis experimentais.
O projeto main a ser olhado é o projeto compartilhado que contém os .razor
arquivos. Os projetos android e iOS não contêm nenhum código específico para Associações Blazor Móveis Experimentais.
Estes são os arquivos no projeto compartilhado:
-
_Imports.razor
– Contém diretivas comuns que são aplicadas a todos os outros.razor
arquivos nesta pasta e suas subpastas. As subpastas podem ter seus próprios_Imports.razor
arquivos com diretivas adicionais. O tipo de diretiva mais comum nesse arquivo é a@using
diretiva , que é usada para importar um namespace para.razor
arquivos, exatamente o mesmo que uma instrução C#using
. -
App.cs
- Contém o main ponto de entrada da interface do usuário do aplicativo, representado por uma classe derivada daXamarin.Forms.Application
classe base. O construtor dessa classe cria uma instância de um Host Genérico, adiciona serviços ao host (o projeto padrão não tem nenhum) e usa o host para adicionar um componente Blazor chamadoHelloWorld
ao elemento de aplicativo (this
). -
Counter.razor
- Contém um componente Blazor chamadoCounter
. -
HelloWorld.razor
- Contém um componente Blazor chamadoHelloWorld
.
Vamos nos aprofundar nos dois Componentes blazor para ver como eles funcionam.
Componente Blazor do Contador
Esse componente contém duas seções:
A marcação que define os elementos da interface do usuário e suas propriedades associadas e manipuladores de eventos:
<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>
As marcas semelhantes a HTML representam componentes de interface do usuário que correspondem aos componentes do Xamarin.Forms e suas propriedades e eventos. Algumas propriedades têm valores computados, como a
Label
propriedade doText
componente, que tem seu valor definido como um valor calculado pelo código C#, que é indicado pelo@( ... )
bloco de expressão.Quando um manipulador de eventos é executado, como o
Button
evento doOnClick
componente, o componente é renderizado automaticamente, o que permite que a interface do usuário seja atualizada sem nenhuma lógica adicional. Cenários mais avançados podem controlar quais componentes são renderizados novamente e quando.O código que implementa qualquer manipulador de eventos ou outra funcionalidade de componente, encapsulado em um
@code { ... }
bloco:int count; void IncrementCount() { count++; }
Esse código incrementa o
count
campo , que também é usado como o valor computado daLabel
propriedade doText
componente. Depois que oIncrementCount()
manipulador de eventos for executado, o novo valor decount
será usado quando a interface do usuário for renderizada novamente.
Componente Blazor HelloWorld
O componente HelloWorld contém apenas marcação:
<ContentView>
<StackLayout Margin="new Thickness(20)">
<Label Text="Hello, World!"
FontSize="40" />
<Counter />
</StackLayout>
</ContentView>
Observe que o Counter
componente é referenciado neste componente referenciando-o como uma marca <Counter />
.
Cada Componente Blazor é compilado em uma classe com o mesmo nome que o arquivo. O namespace é o namespace raiz do projeto, além dos nomes de pasta, se houver, separados por pontos (.
). O tipo pode ser referenciado por outro código C# por meio de seu nome de tipo (não comum) ou em um .razor
arquivo usando-o como uma marca.