5
votes

Xamarin Forms - Définir TextColor par défaut

Existe-t-il un moyen de définir la couleur du texte par défaut sur une couleur spécifique pour tous les éléments de page contenant du texte?

Cela n'a aucun sens pour moi de devoir définir un attribut "TextColor" pour chaque élément contenant du texte.

Merci!


1 commentaires

Il n'existe pas de classe de base pour tous les éléments visuels contenant la propriété Text. Vous devez donc créer un style implicite distinct pour chaque élément visuel souhaité.


4 Réponses :


3
votes

Vous pouvez définir le style des éléments contenant du texte dans App.xaml. Cela définira la TextColor pour toutes les étiquettes, boutons, ... que vous utilisez dans votre application:

    <Style TargetType="Label">
        <Setter Property="TextColor" Value="Red" />
    </Style>

    <Style TargetType="Button">
        <Setter Property="TextColor" Value="Red" />
    </Style>

    <Style TargetType="Entry">
        <Setter Property="TextColor" Value="Red" />
    </Style>

    <Style TargetType="Editor">
        <Setter Property="TextColor" Value="Red" />
    </Style>
...

Malheureusement, vous devrez ajouter une nouvelle balise Style pour tous les éléments visuels contenant du texte. J'ai cherché un moyen plus propre de définir des styles pour tous les éléments avec du texte il y a quelque temps. Mais cela semble être la manière la plus propre de le faire ...

Espérons que Xamarin.Forms ajoutera une manière plus générique de gérer le style.


0 commentaires

1
votes

Vous pouvez utiliser les styles comme indiqué ci-dessus par DenseCrab. Et vous pouvez également créer une classe différente qui dérive de la classe Label. Et vous pouvez définir certaines propriétés par défaut comme la couleur.


0 commentaires

0
votes

Depuis Xamarin Forms 2.6.0, vous pouvez utiliser le style CSS. Cela vous permet de définir globalement des styles pour des éléments ou des classes css spécifiques.

Ajoutez le fichier styles.css au dossier YouProject.Shared> Assets avec le contenu suivant. (Notez le symbole ^ . Il sélectionne n'importe quel élément avec cette classe de base)

<MasterDetailPage.Resources>
    <StyleSheet Source="/Assets/styles.css" />
</MasterDetailPage.Resources>`

Ajoutez une ressource à une vue globale (par exemple, vous utilisez MasterDetailPage ) pour charger le fichier css:

^Label {
    color: red;
}

^Entry {
    color: red;
}

^Button {
    color: red;
}


0 commentaires

0
votes

Vous devez créer un rendu personnalisé pour Label et Entry ou tout autre contrôle sous Android et iOS et vous pouvez y appliquer la couleur directement
[assembly: ExportRenderer (typeof (Label), typeof (IOSLabelRenderer))] test d'espace de noms { classe publique IOSLabelRenderer: LabelRenderer { protected override void OnElementChanged (ElementChangedEventArgs vous pouvez également créer la même chose pour Android


0 commentaires