C#-markup

Översikt

C# Markup är en uppsättning flytande hjälpmetoder och klasser som är utformade för att förenkla processen med att skapa deklarativa .NET Multi-platform App UI(.NET MAUI) användargränssnitt i kod. Det flytande API:et som tillhandahålls av C# Markup är tillgängligt i namnrymden CommunityToolkit.Maui.Markup.

Precis som med XAML möjliggör C# Markup en ren separation mellan användargränssnittet (Vy) och Affärslogik (Vymodell).

C# Markup är tillgängligt på alla plattformar som stöds av .NET MAUI och stöder .NET Hot Reload.

NuGet-paket

C#-markeringspaketet kan ingå i dina projekt enligt beskrivningen i vår Komma igång guide.

Exempel

Här följer några korta exempel som visar hur vanliga uppgifter kan utföras med hjälp av markeringspaketet.

Bindningar

Med C# Markup kan vi definiera bindningen flytande och därför länka samman flera metoder för att minska verbositeten i vår kod:

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

Mer information om de möjliga alternativen för Bind-metoden finns i dokumentationen för BindableObject-tillägget.

Storlek

Med C# Markup kan vi definiera storleksändringen flytande och därför länka samman flera metoder för att minska verbositeten i vår kod:

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

För mera information angående möjliga alternativ för Size-metoden, se dokumentationen om VisualElement-tillägg.

Djupgående exempel

I det här exemplet skapas ett Grid objekt med underordnade Label och Entry objekt. Label visar text, och Entry-data binder till RegistrationCode-egenskapen i viewmodellen. Varje underordnad vy är inställd på att visas på en viss rad i Grid, och Entry sträcker sig över alla kolumner i Grid. Dessutom anges höjden på Entry, tillsammans med dess tangentbord, färger, teckenstorleken på texten och dess Margin.

C# Markup-tillägg gör det också möjligt för utvecklare att definiera namn för kolumner och rader (t.ex. Column.Input) med hjälp av en enum.

C# Markup gör att detta kan definieras med hjälp av dess fluent API:

using CommunityToolkit.Maui.Markup;

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 }
}

Omvandlare

C# Markup-paketet ger möjlighet att definiera IValueConverter och IMultiValueConverter-implementeringar inline när du skapar användargränssnittet.

Omvandlare Beskrivning
FuncConverter Med FuncConverter kan du definiera en IValueConverter implementering infogad när du skapar användargränssnittet.
FuncMultiConverter Med FuncMultiConverter kan du definiera en IMultiValueConverter implementering infogad när du skapar användargränssnittet.

Tillägg

Anmärkning

C# Markup innehåller tilläggsmetoder som anger specifika vyegenskaper. De är utformade för att förbättra kodens läsbarhet och kan användas i kombination med egenskapsuppsättningar. Vi rekommenderar att du alltid använder en tilläggsmetod när det finns en för en egenskap, men du kan välja önskat saldo.

Förlängning Beskrivning
AbsoluteLayout AbsoluteLayout-tilläggen innehåller en serie tilläggsmetoder som stöder positionering Views i AbsoluteLayouts.
AutomationProperties De AutomationProperties tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av hjälpmedelsrelaterade inställningar.
BindableLayout BindableLayout-tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av dess EmptyView, ItemSource och ItemTemplate.
BindableObject De BindableObject tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av Bindings på en BindableObject.
DynamicResourceHandler De DynamicResourceHandler tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av IDynamicResourceHandler som kan användas för att temata en app.
Element De Element tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av utfyllnad, effekter, teckensnittsattribut, dynamiska resurser, text och textfärg för en Element.
FlexLayout FlexLayout-tilläggen innehåller en serie tilläggsmetoder som stöder positionering av en View i en FlexLayout.
Grid Grid-tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av ett rutnät.
Image De Image tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av IImage kontroller.
ItemsView ItemsView-tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av ItemsView kontroller som CarouselView och CollectionView.
Label De Label tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av Label kontroller.
Placeholder De Placeholder tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av IPlaceholder kontroller.
SemanticProperties De SemanticProperties tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av hjälpmedelsrelaterade inställningar.
Style Style<T> innehåller en serie fluent-tilläggsmetoder som stöder konfiguration av Microsoft.Maui.Controls.Style.
TextAlignment TextAlignment-tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av egenskaperna HorizontalTextAlignment och VeticalTextAlignment för kontroller som implementerar ITextAlignment.
View View-tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av justering av kontroller som ärver från View.
VisualElement VisualElement-tilläggen innehåller en serie tilläggsmetoder som stöder konfiguration av storlek, formatering och beteenden för en VisualElement.