Fermer

novembre 25, 2024

Explorer le bouton modèle Telerik .NET MAUI

Explorer le bouton modèle Telerik .NET MAUI


L’interface utilisateur Telerik pour .NET MAUI TemplatedButton vous offre un contrôle détaillé sur le style des boutons de votre application, y compris quatre états de contrôle.

Dans cet article, nous explorerons l’un des derniers boutons de Progress Telerik pour .NET MAUI, le Bouton modèle .NET MAUI. Ce bouton nous permet de personnaliser un bouton autant que nous le souhaitons pour l’adapter parfaitement au design que nous souhaitons mettre en œuvre. Vérifions-le !

Utilisation de la forme la plus basique de .NET MAUI TemplatedButton

Pour utiliser le contrôle .NET MAUI TemplatedButton, vous devez ajouter la référence au Telerik Contrôles .NET MAUI Package NuGet, comme vous pouvez le voir dans le documentation. Une fois la référence ajoutée, vous devez appeler le UseTelerik méthode dans MauiProgram.cs:

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseTelerik()
            ...
    }
}

Ensuite, vous devez accéder à la page sur laquelle vous souhaitez utiliser TemplatedButton et ajouter l’espace de noms correspondant :

<ContentPage ...
             xmlns:telerik="http://schemas.telerik.com/2022/xaml/maui">
            ...            
</ContentPage>

Une fois l’espace de noms prêt, vous pouvez maintenant utiliser le contrôle TemplatedButton, qui, dans sa forme la plus basique, est utilisé comme ceci :

    <VerticalStackLayout HorizontalOptions="Center">
        <telerik:RadTemplatedButton
            x:Name="templatedButton"
            Content="Demo App"
            HeightRequest="100"
            WidthRequest="250" />
    </VerticalStackLayout>

Lorsque vous démarrez l’application avec ce code, vous verrez le contrôle dans sa forme la plus simple :

Le contrôle TemplatedButton dans sa forme la plus simple : un bouton gris avec un texte noir indiquant « application de démonstration »

Peut-être qu’à ce stade, vous ne voyez pas beaucoup de différence par rapport à un bouton .NET MAUI standard, examinons donc les différentes façons de manipuler le contenu du TemplatedButton.

Options de personnalisation par défaut pour un TemplatedButton

Le contrôle TemplatedButton dispose de plusieurs options de personnalisation par défaut que nous verrons ensuite.

Propriétés de personnalisation du TemplatedButton

Les propriétés d’un TemplatedButton sont les suivantes :

  • Arrière-plan et Couleur d’arrière-plan: Permet de spécifier la couleur de fond du champ.
  • BordureBrosse et Couleur de la bordure: Permet de spécifier la couleur de la bordure du champ.
  • Épaisseur de la bordure: Permet de préciser l’épaisseur de la bordure du champ.
  • Rayon de coin: Permet de spécifier un arrondi du contour du champ.
  • Rembourrage: Vous permet de spécifier le remplissage dans le contrôle.
  • Couleur du texte: Permet de spécifier une couleur pour le texte du contrôle.

L’exemple suivant montre comment utiliser certaines de ces propriétés dans le contrôle :

<telerik:RadTemplatedButton
    x:Name="templatedButton9"
    BorderBrush="LightBlue"
    BorderThickness="3"
    Content="Demo App"
    CornerRadius="8"
    HeightRequest="100"
    TextColor="White"
    WidthRequest="250">
    <telerik:RadTemplatedButton.Background>
        <LinearGradientBrush>
            <GradientStop Offset="0.1" Color="SteelBlue" />
            <GradientStop Offset="1" Color="Navy" />
        </LinearGradientBrush>
    </telerik:RadTemplatedButton.Background>
</telerik:RadTemplatedButton>

La configuration ci-dessus entraîne le rendu du TemplatedButton comme suit :

Le contrôle TemplatedButton avec différentes propriétés appliquées : un arrière-plan dégradé bleu foncé, un contour bleu clair, des coins arrondis, du texte blanc

Il est important de noter qu’il est également possible d’ajouter ces propriétés à un dictionnaire de ressources pour appliquer un style avec les mêmes propriétés à plusieurs TemplatedButtons, comme indiqué ci-dessous :

<Style x:Key="CustomTemplatedButtonStyle" TargetType="telerik:RadTemplatedButton">
    <Setter Property="BorderBrush" Value="LightBlue" />
    <Setter Property="BorderThickness" Value="3" />        
    <Setter Property="CornerRadius" Value="8" />        
    <Setter Property="TextColor" Value="White" />        
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush>
                <GradientStop Offset="0.1" Color="SteelBlue" />
                <GradientStop Offset="1" Color="Navy" />
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
</Style>

En utilisant le style ci-dessus, nous obtiendrons le même bouton mais de manière plus simplifiée :

<telerik:RadTemplatedButton
    x:Name="templatedButton9"
    Content="Demo App"
    Style="{StaticResource CustomTemplatedButtonStyle}"
    HeightRequest="100"
    WidthRequest="250" />

Voyons maintenant comment modifier l’effet Ripple du contrôle.

Appliquer un effet d’entraînement

Il est possible de manipuler l’effet Ripple d’un TemplatedButton via le RippleColor et RippleMode propriétés. Le premier nous permettra de spécifier une couleur différente pour l’effet Ripple, tandis que le second nous permettra de manipuler le comportement à travers les valeurs suivantes :

  • Impulsion (par défaut) : un effet d’ondulation est produit lorsque le bouton est enfoncé, qui s’estompe immédiatement.
  • Prise: Un effet d’ondulation est produit lorsque le bouton est enfoncé. Si le bouton est maintenu enfoncé, l’effet est également conservé.
  • Aucun: Aucun effet d’ondulation n’est produit.

Vous trouverez ci-dessous un exemple avec les propriétés ci-dessus modifiées :

<telerik:RadTemplatedButton
    x:Name="templatedButton"
    telerik:RadEffects.RippleColor="LightPink"
    telerik:RadEffects.RippleMode="Hold"
    Content="Demo App"
    HeightRequest="100"
    WidthRequest="250" />

Le code ci-dessus donne le contrôle suivant, que j’ai maintenu enfoncé :

Contrôle TemplatedButton avec propriétés d'effet Ripple modifiées : l'arrière-plan est rose et le texte est noir

Vous pouvez voir que l’effet Ripple est maintenu en raison de la Hold valeur de la RippleMode propriété.

Différentes façons de configurer le contenu

Maintenant que nous avons analysé les propriétés qui permettent la personnalisation via différentes propriétés, analysons comment nous pouvons modifier le ControlTemplate d’un TemplatedButton, qui est la structure visuelle du contrôle.

Spécifier que le contenu est une chaîne

La manière la plus simple de personnaliser un TemplatedButton consiste à attribuer une chaîne de texte comme contenu du contrôle. C’est ce que nous avons fait dans les exemples précédents, en attribuant la chaîne Application de démonstration au Content propriété. Cette façon d’attribuer du contenu entraîne l’affichage d’une étiquette comme ControlTemplate du contrôle tant que le ContentTemplate la propriété n’est pas spécifiée, comme nous le verrons plus tard.

Spécifier que le contenu est un objet

Une manière très similaire de spécifier des informations consiste à attribuer un objet au Content propriété, ce qui entraînera la ToString méthode de l’objet à appeler afin que son résultat soit affiché sous forme de Label dans le contrôle. Par exemple, supposons que nous ayons le modèle suivant :

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public override string ToString()
    {
        return $"My name is {FirstName} {LastName}";
    }
}

Nous pouvons l’initialiser et l’utiliser comme suit :

<ContentPage ...>
    <ContentPage.Resources>
        ...
        <local:Person
            x:Key="name"
            FirstName="Héctor"
            LastName="Pérez" />
    </ContentPage.Resources>
    
    <VerticalStackLayout HorizontalOptions="Center" Spacing="10">
        <telerik:RadTemplatedButton
            x:Name="templatedButton4"
            Content="{StaticResource name}"
            HeightRequest="100"
            WidthRequest="250" />
    </VerticalStackLayout>

Cela affichera le contenu du ToString méthode comme suit :

Le contrôle TemplatedButton affichant l'exécution de la méthode ToString d'un objet. Il est gris clair avec le texte noir

Voyons maintenant comment modifier le ContentTemplate propriété pour personnaliser le contrôle en fonction de nos besoins.

Spécification d’un ContentTemplate comme contenu du TemplatedButton

L’une des façons de tirer le meilleur parti du contrôle TemplatedButton consiste à personnaliser le ContentTemplate propriété. Cela nous permet de créer des boutons inhabituels qui s’adaptent mieux à l’identité d’une application, qui peut être aussi complexe que nécessaire.

Par exemple, supposons que vous deviez ajouter une ombre sombre à vos boutons. En personnalisant le ContentTemplate propriété, nous pouvons ajouter deux rectangles et une étiquette pour atteindre cet objectif :

<telerik:RadTemplatedButton
    x:Name="templatedButton2"
    Padding="0"
    Background="Transparent"
    HeightRequest="100"
    WidthRequest="250">
    <telerik:RadTemplatedButton.ContentTemplate>
        <DataTemplate>
            <Grid>
                <RoundRectangle
                    Margin="10,10,0,0"
                    CornerRadius="8"
                    Fill="#085E7D" />
                <RoundRectangle
                    Margin="0,0,10,10"
                    CornerRadius="8"
                    Fill="#AFE9FD"
                    Stroke="#085E7D"
                    StrokeThickness="2" />
                <Label
                    FontAttributes="Bold"
                    FontSize="20"
                    HorizontalOptions="Center"
                    Text="Click Me!"
                    TextColor="#085E7D"
                    VerticalOptions="Center" />
                <Grid>
                    <RoundRectangle
                        Margin="10,10,0,0"
                        CornerRadius="8"
                        Fill="#800080" />
                    <RoundRectangle
                        Margin="0,0,10,10"
                        CornerRadius="8"
                        Fill="#CDA4DE"
                        Stroke="#800080"
                        StrokeThickness="2" />
                    <Label
                        FontAttributes="Bold"
                        FontSize="20"
                        HorizontalOptions="Center"
                        Text="Click Me!"
                        TextColor="#800080"
                        VerticalOptions="Center" />
                </Grid>
            </Grid>
        </DataTemplate>
    </telerik:RadTemplatedButton.ContentTemplate>
</telerik:RadTemplatedButton>

Avec cela, nous obtenons un bouton comme celui de l’image suivante :

Un contrôle d'ombre personnalisé utilisant TemplatedButton. Le Cliquez-moi ! le bouton a un fond rose clair avec une bordure, son ombre et le texte dans une teinte plus foncée de ce rose/violet

Comme vous pouvez le constater, il est très simple de personnaliser un TemplatedButton autant que nous le souhaitons. Voyons maintenant quels événements et commandes sont disponibles dans le contrôle.

Événements et commandes disponibles dans TemplatedButton

Le contrôle TemplatedButton comporte trois événements que nous pouvons utiliser pour effectuer des opérations lorsqu’elles sont déclenchées : Clicked, Pressed et Released.

Le Clicked et Pressed les événements sont très similaires dans la mesure où les deux sont déclenchés dès que la commande est enfoncée d’une manière ou d’une autre. Ces événements peuvent être très utiles pour effectuer certains traitements ou validations avant de réaliser l’exécution d’une opération.

D’un autre côté, le Released L’événement est déclenché une fois que le TemplatedButton a cessé d’être enfoncé. Cet événement pourrait être utile pour certains post-traitements, comme arrêter d’afficher un Loader ou activer/désactiver un autre contrôle.

Dans l’exemple suivant, je montre un TemplatedButton avec les événements ajoutés :

<telerik:RadTemplatedButton
    x:Name="templatedButton6"
    Clicked="templatedButton6_Clicked"
    Content="Demo App"
    HeightRequest="100"
    Pressed="templatedButton_Pressed"
    Released="templatedButton_Released"
    WidthRequest="250" />

Dans le code derrière, nous aurions les gestionnaires d’événements comme suit :

private async void templatedButton_Pressed(object sender, EventArgs e)
{
    await DisplayAlert("Button Pressed", "The button was pressed", "OK");
}

private async void templatedButton_Released(object sender, EventArgs e)
{
    await DisplayAlert("Button Released", "The button was released", "OK");
}

private async void templatedButton6_Clicked(object sender, EventArgs e)
{
    await DisplayAlert("Button Clicked", "The button was clicked", "OK");
}

Dans le cas où vous souhaitez communiquer avec un View Model, nous avons également le Command propriété qui permet d’exécuter une commande lorsque le bouton est cliqué, tandis que le CommandParameter La propriété permet d’envoyer un paramètre supplémentaire à la commande. La définition du Command et CommandParameter les propriétés ressemblent à ceci :

<telerik:RadTemplatedButton
    x:Name="templatedButton7"
    Command="{Binding ButtonClickedCommand}"
    CommandParameter="Héctor"
    Content="Demo App"
    HeightRequest="100"
    WidthRequest="250" />

La définition de la commande doit être définie dans le ViewModel comme dans l’exemple suivant :

public partial class MainViewModel : ObservableObject
{
    [RelayCommand]
    public void ButtonClicked(string data)
    {
        Debug.WriteLine($"Hello {data}");
    }
}

Définir les états visuels

Dans .NET MAUI, il est possible de définir différentes apparences visuelles pour chaque état d’un contrôle. Dans un TemplatedButton, nous avons quatre états visuels possibles :

  • Normale: Lorsqu’un bouton n’est pas enfoncé
  • Pressé: Lorsqu’un bouton est enfoncé
  • Pointeur sur: Disponible uniquement dans les applications de bureau et se produit lorsque nous passons le curseur sur le bouton
  • Désactivé: Lorsqu’un bouton est désactivé

Nous pouvons définir les états visuels dans différentes parties de notre code. L’exemple suivant montre comment les définir dans un style à appliquer à plusieurs instances d’un TemplatedButton :

<ContentPage ...>
    <ContentPage.Resources>
        ...
        <Color x:Key="ButtonPrimaryTC">#FFFFFF</Color>
        <Color x:Key="ButtonPrimaryDefaultBG">#7E49FF</Color>
        <Color x:Key="ButtonPrimaryPressedBG">#681EE3</Color>
        <Color x:Key="ButtonPrimaryDisabledBG">#F1F5F9</Color>
        <Color x:Key="ButtonPrimaryDisabledTC">#CBD5E1</Color>

        <Style x:Key="CustomButtonStyle" TargetType="telerik:RadTemplatedButton">
            <Setter Property="VisualStateManager.VisualStateGroups">
                <Setter.Value>
                    <VisualStateGroupList>
                        <VisualStateGroup Name="CommonStates">
                            <VisualState x:Name="Normal">
                                <VisualState.Setters>
                                    <Setter Property="Scale" Value="1" />
                                    <Setter Property="Background" Value="{StaticResource ButtonPrimaryDefaultBG}" />
                                    <Setter Property="TextColor" Value="{StaticResource ButtonPrimaryTC}" />
                                </VisualState.Setters>
                            </VisualState>
                            <VisualState Name="PointerOver">
                                <VisualState.Setters>
                                    <Setter Property="Background" Value="#E8F5F4" />
                                    <Setter Property="TextColor" Value="#000000" />
                                </VisualState.Setters>
                            </VisualState>
                            <VisualState x:Name="Pressed">
                                <VisualState.Setters>
                                    <Setter Property="Scale" Value="0.95" />
                                    <Setter Property="Background" Value="{StaticResource ButtonPrimaryPressedBG}" />
                                    <Setter Property="TextColor" Value="{StaticResource ButtonPrimaryTC}" />
                                </VisualState.Setters>
                            </VisualState>
                            <VisualState x:Name="Disabled">
                                <VisualState.Setters>
                                    <Setter Property="TextColor" Value="{StaticResource ButtonPrimaryDisabledTC}" />
                                    <Setter Property="BackgroundColor" Value="{StaticResource ButtonPrimaryDisabledBG}" />
                                </VisualState.Setters>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateGroupList>
                </Setter.Value>
            </Setter>
        </Style>
    </ContentPage.Resources>

    <VerticalStackLayout HorizontalOptions="Center" Spacing="10">
        ...
        <telerik:RadTemplatedButton
            x:Name="templatedButton8"
            Content="Demo App"
            CornerRadius="8"
            HeightRequest="100"
            Style="{StaticResource CustomButtonStyle}"
            WidthRequest="250" />
    </VerticalStackLayout>
</ContentPage>    

Dans l’exemple ci-dessus, les états visuels permettront à un TemplatedButton de changer à la fois la couleur et la taille lorsqu’il est enfoncé, élargissant ainsi les options de personnalisation du contrôle.

Conclusion

Dans cet article, nous avons exploré en détail le contrôle TemplatedButton, ainsi que ses différentes options de personnalisation qui vous permettront de l’ajuster aux exigences de conception de vos applications .NET MAUI.

Essayez ce composant, ainsi que la liste croissante de contrôles disponibles, avec l’essai gratuit de l’interface utilisateur Telerik pour .NET MAUI.

Essayez maintenant




Source link