Freigeben über


C#-Markup

Überblick

C#-Markup ist eine Reihe von Fluent-Hilfsmethoden und -klassen, die das Erstellen deklarativer .NET Multi-Platform App UI (.NET MAUI)-Benutzeroberflächen im Code vereinfachen. Die Fluent API, die von C# Markup bereitgestellt wird, ist im CommunityToolkit.Maui.Markup-Namespace verfügbar.

Wie bei XAML ermöglicht C#-Markup eine klare Trennung zwischen UI (Ansicht) und Geschäftslogik (Ansichtsmodell).

C#-Markup ist auf allen Plattformen verfügbar, die von .NET MAUI unterstützt werden, und unterstützt .NET Hot Reload.

NuGet-Paket

Das C#-Markuppaket kann in Ihr Projekt(n) eingeschlossen werden, wie in unserem Leitfaden für erste Schritte beschrieben.

Beispiele

Im Folgenden finden Sie einige kurze Beispiele, die zeigen, wie allgemeine Aufgaben mithilfe des Markuppakets erreicht werden können.

Bindungen

Mit C#-Markup können wir die Bindung fließend definieren und daher mehrere Methoden miteinander verketten, um die Ausführlichkeit unseres Codes zu reduzieren:

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

Weitere Informationen zu den möglichen Optionen für die Bind Methode finden Sie in der BindableObject Erweiterungsdokumentation.

Dimensionierung

C#-Markup ermöglicht es uns, die Größenanpassung nahtlos zu definieren und daher mehrere Methoden miteinander zu verketten, um unseren Code weniger umständlich zu machen.

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

Weitere Informationen zu den möglichen Optionen für die Size Methode finden Sie in der VisualElement Erweiterungsdokumentation.

Ausführliches Beispiel

In diesem Beispiel wird ein Grid Objekt mit untergeordneten Label und Entry Objekten erstellt. Der Label Text wird angezeigt, und die Entry Daten werden an die RegistrationCode Eigenschaft des Ansichtsmodells gebunden. Jede untergeordnete Ansicht ist so festgelegt, dass sie in einer bestimmten Zeile in der Gridund die Entry überspannt alle Rubriken in der Grid. Darüber hinaus wird die Höhe des Entry festgelegt, zusammen mit der Tastatur, den Farben, der Schriftgröße des Textes und dessen Margin.

C#-Markuperweiterungen ermöglichen Entwicklern auch das Definieren von Namen für Spalten und Zeilen (z. B. Column.Input) mithilfe eines enum.

Mit C#-Markup kann dies mithilfe der Fluent-API definiert werden:

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

Konverter

Das C#-Markuppaket bietet die Möglichkeit, IValueConverter- und IMultiValueConverter-Implementierungen inline zu definieren, wenn Sie die Benutzeroberfläche Ihrer Anwendung erstellen.

Umwandler BESCHREIBUNG
FuncConverter Dies FuncConverter bietet die Möglichkeit, beim Erstellen der Benutzeroberfläche eine IValueConverter Inlineimplementierung zu definieren.
FuncMultiConverter Dies FuncMultiConverter bietet die Möglichkeit, beim Erstellen der Benutzeroberfläche eine IMultiValueConverter Inlineimplementierung zu definieren.

Erweiterungen

Hinweis

C#-Markup enthält Erweiterungsmethoden, die bestimmte Ansichtseigenschaften festlegen. Sie wurden entwickelt, um die Lesbarkeit von Code zu verbessern und kann in Kombination mit Eigenschaftensettern verwendet werden. Es wird empfohlen, immer eine Erweiterungsmethode zu verwenden, wenn es eine solche für eine Eigenschaft gibt, Sie können aber auch ihre Lieblings-Balance verwenden.

Erweiterung BESCHREIBUNG
AbsoluteLayout Die AbsoluteLayout-Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die das Positionieren von Views in AbsoluteLayouts unterstützen.
AutomationProperties Die AutomationProperties Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die die Konfiguration von Barrierefreiheitseinstellungen unterstützen.
BindableLayout Die BindableLayout-Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die das Konfigurieren von EmptyView, ItemSource und ItemTemplate unterstützen.
BindableObject Die BindableObject-Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die das Konfigurieren von Bindings an ein BindableObject unterstützen.
DynamicResourceHandler Die DynamicResourceHandler Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die das Konfigurieren von IDynamicResourceHandler unterstützen, das zum Design einer App verwendet werden kann.
Element Die Element Erweiterungen bieten eine Reihe von Erweiterungsmethoden, die das Konfigurieren der Abstandseinstellungen, Effekteinstellungen, Schriftattribute, dynamischen Ressourcen, des Textes und der Textfarbe einer Element unterstützen.
FlexLayout Die FlexLayout-Erweiterungen stellen eine Reihe von Erweiterungsmethoden zur Verfügung, die die Positionierung eines View in einem FlexLayout unterstützen.
Grid Die Grid-Erweiterungen bieten eine Reihe von Erweiterungsmethoden, die das Konfigurieren eines Grid unterstützen.
Image Die Image Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die das Konfigurieren von IImage Steuerelementen unterstützen.
ItemsView Die ItemsView-Erweiterungen bieten eine Serie von Erweiterungsmethoden, die das Konfigurieren von Steuerelementen wie ItemsView, CarouselView und CollectionView unterstützen.
Label Die Label Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die das Konfigurieren von Label Steuerelementen unterstützen.
Placeholder Die Placeholder Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die das Konfigurieren von IPlaceholder Steuerelementen unterstützen.
SemanticProperties Die SemanticProperties Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die die Konfiguration von Barrierefreiheitseinstellungen unterstützen.
Style Style<T> stellt eine Reihe von Fluent-Erweiterungsmethoden bereit, die das Konfigurieren Microsoft.Maui.Controls.Styleunterstützen.
TextAlignment Die TextAlignment Erweiterungen bieten eine Reihe von Erweiterungsmethoden, die das Konfigurieren von Eigenschaften der HorizontalTextAlignment und VeticalTextAlignment auf Steuerelementen unterstützen, die ITextAlignment implementieren.
View Die View-Erweiterungen bieten eine Reihe von Erweiterungsmethoden, die das Konfigurieren der Ausrichtung von Steuerelementen unterstützen, die von View erben.
VisualElement Die VisualElement-Erweiterungen stellen eine Reihe von Erweiterungsmethoden bereit, die das Konfigurieren der Größenanpassung, der Stilisierung und der Verhaltensweisen eines VisualElement unterstützen.