Partilhar via


Estilo<T>

Style<T> fornece uma série de métodos de extensão fluentes que dão suporte à configuração de Microsoft.Maui.Controls.Style.

Construtores

Style<T> fornece os seguintes construtores:

public Style(BindableProperty property, object value);
public Style(params (BindableProperty Property, object Value)[] setters);

Esses construtores podem ser usados para inicializar Style<T> e atribuí-los a um Microsoft.Maui.Controls.Style para um único setter, da seguinte maneira:

new Label
{
    Style = new Style<Entry>(Entry.TextColorProperty, Colors.Red)
}

Esses construtores também podem ser usados para inicializar Style<T> e atribuí-los a um Microsoft.Maui.Controls.Style para vários setters usando tipos, da seguinte maneira:

new Label
{
    Style = new Style<Entry>(
            (Entry.TextColorProperty, Colors.Red),
            (Entry.BackgroundColorProperty, Colors.White),
            (Entry.FontAttributesProperty, FontAttributes.Bold))
}

Propriedades

Style<T> contém uma propriedade, MauiStyle.

Essa propriedade aproveita Microsoft.Maui.Controls.Style e é atribuída após a inicialização.

Os estilos adicionados e implementados em Style<T> são armazenados na propriedade MauiStyle.

public Microsoft.Maui.Controls.Style MauiStyle { get; }

Métodos

Style<T> oferece métodos de extensão fluentes para estilos adicionais de Add, para definir ApplyToDerivedTypes, BasedOn e CanCascade.

Adicionar

Style<T> oferece várias maneiras de adicionar a um estilo existente:

public Style<T> Add(BindableProperty property, object value);
public Style<T> AddAppThemeBinding(BindableProperty property, object light, object dark);
public Style<T> Add(params (BindableProperty Property, object Value)[] setters);
public Style<T> AddAppThemeBindings(params (BindableProperty Property, object Light, object Dark)[] setters);
public Style<T> Add(params Behavior[] behaviors);
public Style<T> Add(params TriggerBase[] triggers);

Os métodos Add podem ser usados da seguinte maneira:

new Label
{
    Style = new Style<Label>()
                .AddAppThemeBinding(Label.TextColorProperty, Colors.Red, Colors.Orange)
                .Add((Label.BackgroundColorProperty, Colors.White), (Label.FontAttributesProperty, FontAttributes.Bold))
                .Add(new NumericValidationBehavior())
                .Add(new EventTrigger { Event = nameof(Label.Focused) });
}

Para obter mais informações sobre o uso de AddAppThemeBinding consulte a documentação do Theming.

ApplyToDerivedTypes

O método de extensão fluente ApplyToDerivedTypes(bool value) define o valor da propriedade AppleToDerivedTypes:

public Style<T> ApplyToDerivedTypes(bool value);

Ele pode ser usado da seguinte maneira:

new Label
{
    Style = new Style<Label>(Label.TextColorProperty, Colors.Red)
                .ApplyToDerivedTypes(true);
}

BasedOn

O método de extensão fluente BasedOn(Style value) define o valor da propriedade BasedOn:

public Style<T> BasedOn(Style value);

Ele pode ser usado da mesma forma para basear o estilo atual em um estilo existente:

new VerticalStackLayout
{
    Children = 
    {
        new Label
        {
            Style = new Style<Label>(Label.TextColorProperty, Colors.Red)
        }.Assign(out Label redTextLabel),

        new Label
        {
          Style = new Style<Label>().BasedOn(redTextLabel.Style);
        }
    }
};

CanCascade

O método de extensão fluente CanCascade(bool value) define o valor da propriedade CanCascade:

public Style<T> CanCascade(bool value);

Ele pode ser usado da seguinte maneira:

new Label
{
  Style = new Style<Label>(Label.TextColorProperty, Colors.Red).CanCascade(true);
}