IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Phone .NET Discussion :

Changer le background d'un textblock [Windows Phone 8]


Sujet :

Windows Phone .NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 37
    Points
    37
    Par défaut Changer le background d'un textblock
    Bonjour a tous

    le titre du post est assez vague mais je vais expliquez ma question maintenant

    J'ai ma page en xaml qui contient une listbox que je remplis au lancement de la page
    le truc c'est que ma listeBox remplis la page avec des textblock et j'aimerais changer leur background en fonction de la catégorie de l'objet qui est visible dans le textblock
    je vous donne une partie de mon code Xaml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            <ListBox x:Name="mylistbox" Margin="0,31,0,170"  SelectionChanged="mylistbox_SelectionChanged" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid  Height="80" VerticalAlignment="Top">
                            <TextBlock x:Name="nameblock" FontSize="20"  Text="{Binding nom}" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Height="57" Width="236"  Margin="10,10,0,0" />
                            <TextBlock x:Name="nameblock2" FontSize="20" Text="{Binding categorie}" HorizontalAlignment="Right" TextWrapping="Wrap" VerticalAlignment="Top" Height="57" Width="236" Margin="200,10,0,0" />
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
    et de mon code c#

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            public void remplirListBox() {
                List<Objet> temp = new List<Objet>();
     
                temp = Objet.getInfo();
                for (int i = 0; i < temp.Count; i++)
                {
                     mylistbox.Items.Add(temp.ElementAt(i));
     
                }
            }
    j'aimerai donc changer la couleur de la grid qui entoure nameblock et nameblock2

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Il te suffit de faire un binding sur le backgroud de la grille, en utilisant un converter qui va retourner une valeur en fonction de la valeur de la categorie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            <ListBox x:Name="mylistbox" Margin="0,31,0,170"  SelectionChanged="mylistbox_SelectionChanged" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid  Height="80" VerticalAlignment="Top" Background="{Binding categorie,Converter={StaticResource categorieColorConverter}}">
                            <TextBlock x:Name="nameblock" FontSize="20"  Text="{Binding nom}" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Height="57" Width="236"  Margin="10,10,0,0" />
                            <TextBlock x:Name="nameblock2" FontSize="20" Text="{Binding categorie}" HorizontalAlignment="Right" TextWrapping="Wrap" VerticalAlignment="Top" Height="57" Width="236" Margin="200,10,0,0" />
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
    Exemple de converter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        public class categorieColorConverter: IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, string language)
            {
                string categorie= value as String;
                if(categorie==.....)
                  return new SolidColorBrush(Colors.Black);
    else
    return new SolidColorBrush(Colors.Green);
    ...............
            }
     
            public object ConvertBack(object value, Type targetType, object parameter, string language)
            {
                throw new NotImplementedException();
            }
     
     
        }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 37
    Points
    37
    Par défaut
    je comprends a peu près le principe
    j'ai adapter le concept a mon projet mais j'ai quand même des messages d'erreur sur les principales fonctions :

    Erreur 2 'Projet.categorieColorConverter' n'implémente pas le membre d'interface 'System.Windows.Data.IValueConverter.Convert(object, System.Type, object, System.Globalization.CultureInfo)'
    Erreur 1 'Projet.categorieColorConverter' n'implémente pas le membre d'interface 'System.Windows.Data.IValueConverter.ConvertBack(object, System.Type, object, System.Globalization.CultureInfo)'
    Erreur 3 Impossible de résoudre la ressource "categorieColorConverter".



    et si tu pouvais juste m'expliquer le bout de code que tu as mis dans le xaml ça m'aiderai c'est un peu mystique pour moi la ^^

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Ah je pensais que c'était du windows phone non silverlight (winrt).
    L'interface IValueConverter n'est pas la même entre winrt et silverlight.

    Comme son nom l'indique le ValueConverter va te permertre de convertir la valeur du binding par une autre valeur que tu vas définir par code.
    Le cas tres courant est d'utiliser un converter pour un booleen vers un visibility.

    Pour la 3eme erreur c'est parceque tu dois rajouter dans les ressources de ta pages une instance du converter.
    Plus d'info : (WPF est similaire à silverlight)
    http://www.wpftutorial.net/ValueConverters.html

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 37
    Points
    37
    Par défaut
    merci beaucoup je vais voir le tuto et si j'y arrives toujours pas je reviens post ici
    et si j'y arrive bah merci beaucoup pour ton aide ( encore ) et je passerai le post en résolu

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 37
    Points
    37
    Par défaut
    j'ai lu le tuto et je pense qu'on s'est mal compris en faite ^^
    J'ai plusieurs catégories certes mais ce n'est pas ça qui va changer la couleurs
    les catégories sont de type string, le nombre de catégorie ainsi que leur couleur de fond est déjà prévu
    j'ai pas besoin de convertir vraiment, il faut juste que je fasse le binding, mais ça je comprends pas comment faire :/

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    Euh ben c'est justement fait pour ca.
    Dans ton modèle (les données) tu as une catérogie. Tu sais que fonctionnellement pour telle catégorie il te faut une couleur verte. (C'est le converter : if(categorie=="...") retourne vert )
    Tu n'as qu'a dire à ta grille : toi tu auras la couleur de cette catégorie (Background="{Binding categorie}").
    Or une catégorie c'est un string qui n'est pas une couleur...
    C'est là qu'entre en jeu le converter : il va savoir qu'il faut du vert lorsque catégorie vaut "laCategorieCible". (Background="{Binding categorie,Converter={.......}")

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 37
    Points
    37
    Par défaut
    Problème résolu merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SWING][background] changer le background
    Par PoPeio dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 31/03/2006, 11h31
  2. [Swing / JTree] Changer le background d'un TreeNode
    Par david06600 dans le forum Composants
    Réponses: 4
    Dernier message: 28/02/2006, 16h17
  3. [SWING]changer le background d'un JButton
    Par david06600 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 18/02/2006, 21h49
  4. Changer le background d'une cellule de JTable
    Par m@t dans le forum Composants
    Réponses: 8
    Dernier message: 27/11/2005, 17h28
  5. [API win32] Changer le background des menuPopup
    Par dalyusmo dans le forum MFC
    Réponses: 6
    Dernier message: 05/10/2005, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo