Markup do C#

Visão geral

A Marcação C# é um conjunto de classes e métodos auxiliares fluentes projetados para simplificar o processo de criação de interfaces do usuário declarativas do .NET Multi-platform App UI (.NET MAUI) no código. A API fluente fornecida pela Marcação C# está disponível no namespace CommunityToolkit.Maui.Markup.

Assim como acontece com o XAML, a Marcação C# permite uma separação limpa entre a interface do usuário (Exibição) e a Lógica de negócios (Modelo de exibição).

A Marcação C# está disponível em todas as plataformas compatíveis com o .NET MAUI e dá suporte à Recarga Dinâmica do .NET.

Pacote NuGet

O pacote da Marcação C# pode ser incluído em seus projetos, conforme descrito em nosso guia de Introdução.

Exemplos

Aqui estão alguns breves exemplos que mostram como tarefas comuns podem ser realizadas através do uso do pacote da Marcação.

Associações

A Marcação C# nos permite definir a associação fluentemente e, portanto, encadear vários métodos para reduzir o detalhamento do nosso código:

new Entry().Bind(Entry.TextProperty, static (ViewModel vm) => vm.RegistrationCode, static (ViewModel vm, string text) => vm.RegistrationCode = text)

Para mais detalhes sobre as possíveis opções do método Bind, confira a documentação de extensões BindableObject.

Dimensionamento

A Marcação C# nos permite definir o dimensionamento fluentemente e, portanto, encadear vários métodos para reduzir o detalhamento do nosso código:

new Entry().Size(200, 40);

Para mais detalhes sobre as possíveis opções do método Size, confira a documentação de extensões VisualElement.

Exemplo detalhado

Este exemplo cria um objeto Grid, com objetos filho Label e Entry. O Label exibe o texto e os dados Entry associados à propriedade RegistrationCode do viewmodel. Cada modo de exibição filho é definido para aparecer em uma linha específica na Grid e a Entry abrange todas as colunas na Grid. Além disso, a altura da Entry é definida, juntamente com seu teclado, cores, o tamanho da fonte do seu texto e seu Margin.

As extensões da Marcação C# também permitem que os desenvolvedores definam nomes para Colunas e Linhas (por exemplo Column.Input) usando um enum.

A Marcação C# permite que isso seja definido usando sua API fluente:

using static CommunityToolkit.Maui.Markup.GridRowsColumns;

class SampleContentPage : ContentPage
{
    public SampleContentPage()
    {
        Content = new Grid
        {
            RowDefinitions = Rows.Define(
                (Row.TextEntry, 36)),

            ColumnDefinitions = Columns.Define(
                (Column.Description, Star),
                (Column.Input, Stars(2))),

            Children =
            {
                new Label()
                    .Text("Code:")
                    .Row(Row.TextEntry).Column(Column.Description),

                new Entry
                {
                    Keyboard = Keyboard.Numeric,
                }.Row(Row.TextEntry).Column(Column.Input)
                 .BackgroundColor(Colors.AliceBlue)
                 .FontSize(15)
                 .Placeholder("Enter number")
                 .TextColor(Colors.Black)
                 .Height(44)
                 .Margin(5, 5)
                 .Bind(Entry.TextProperty, static (ViewModel vm) => vm.RegistrationCode, static (ViewModel vm, string text) => vm.RegistrationCode = text)
            }
        };
    }

    enum Row { TextEntry }
    enum Column { Description, Input }
}

Conversores

O pacote de Marcação C# fornece a capacidade de definir as implementações IValueConverter e IMultiValueConverter embutidas ao criar a interface do usuário de seus aplicativos.

Conversor Descrição
FuncConverter O FuncConverter fornece a capacidade de definir uma implementação IValueConverter embutida ao criar sua interface do usuário.
FuncMultiConverter O FuncMultiConverter fornece a capacidade de definir uma implementação IMultiValueConverter embutida ao criar sua interface do usuário.

Extensões

Observação

A Marcação C# inclui métodos de extensão que definem propriedades de exibição específicas. Eles são projetados para melhorar a legibilidade do código e podem ser usados em combinação com os setters da propriedade. Quando houver um método de extensão, é recomendável sempre usá-lo para uma propriedade, mas você pode escolher o equilíbrio de sua preferência.

Extensão Descrição
AbsoluteLayout As extensões AbsoluteLayout fornecem uma série de métodos de extensão que dão suporte ao posicionamento de Views em AbsoluteLayouts.
AutomationProperties As extensões AutomationProperties fornecem uma série de métodos de extensão que dão suporte à definição de configurações relacionadas à acessibilidade.
BindableLayout As extensões BindableLayout fornecem uma série de métodos de extensão que dão suporte à configuração de EmptyView, ItemSource e ItemTemplate.
BindableObject As extensões BindableObject fornecem uma série de métodos de extensão que dão suporte à configuração de Bindings em um BindableObject.
DynamicResourceHandler As extensões DynamicResourceHandler fornecem uma série de métodos de extensão que dão suporte à configuração de IDynamicResourceHandler que podem ser usadas para tema de um aplicativo.
Element As extensões Element fornecem uma série de métodos de extensão que dão suporte à configuração do preenchimento, efeitos, atributos de fonte, recursos dinâmicos, texto e cor do texto de um Element.
FlexLayout As extensões FlexLayout fornecem uma série de métodos de extensão que dão suporte ao posicionamento de um View em um FlexLayout.
Grid As extensões Grid fornecem uma série de métodos de extensão que dão suporte à configuração de uma Grade.
Image As extensões Image fornecem uma série de métodos de extensão que dão suporte à configuração de controles IImage.
ItemsView As extensões ItemsView fornecem uma série de métodos de extensão que dão suporte à configuração de controles ItemsView, como CarouselView e CollectionView.
Label As extensões Label fornecem uma série de métodos de extensão que dão suporte à configuração de controles Label.
Placeholder As extensões Placeholder fornecem uma série de métodos de extensão que dão suporte à configuração de controles IPlaceholder.
SemanticProperties As extensões SemanticProperties fornecem uma série de métodos de extensão que dão suporte à definição de configurações relacionadas à acessibilidade.
Style Style<T> fornece uma série de métodos de extensão fluentes que dão suporte à configuração de Microsoft.Maui.Controls.Style.
TextAlignment As extensões TextAlignment fornecem uma série de métodos de extensão que dão suporte à configuração das propriedades HorizontalTextAlignment e VeticalTextAlignment em controles que implementam ITextAlignment.
View As extensões View fornecem uma série de métodos de extensão que dão suporte à configuração do alinhamento de controles herdados de View.
VisualElement As extensões VisualElement fornecem uma série de métodos de extensão que dão suporte à configuração de dimensionamento, estilo e comportamentos de um VisualElement.