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

Silverlight Discussion :

l'axe X de mon graphe n'est plus ordonné si j'utilise un converter


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut l'axe X de mon graphe n'est plus ordonné si j'utilise un converter
    Bonjour,

    J’ai un graphique qui affiche deux lineSeries, voici le Xaml :

    Code xml : 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
    20
    21
    22
    23
    24
    25
    26
    <toolkit:Chart x:Name="GraphSales" Canvas.Top="264" BorderBrush="#FF9FABB7" Height="156" Width="466" Canvas.Left="103" >
     
     
                        <toolkit:LineSeries x:Name="LineGauche"  DependentValuePath="X" IndependentValuePath="Y"  Title="Gauche" DependentValueBinding="{Binding SasGauche}" IndependentValueBinding="{Binding PerDate }" >
                            <charting:LineSeries.DataPointStyle>
                                <Style TargetType="charting:DataPoint">
                                    <Setter Property="Visibility" Value="Visible"/>
                                    <Setter Property="Background" Value="{StaticResource Ligne_Bleue}"/>
     
                                </Style>
                            </charting:LineSeries.DataPointStyle>
                        </toolkit:LineSeries>
     
                        <!--Centre-->
                        <toolkit:LineSeries x:Name="LineCentre"  DependentValuePath="X" IndependentValuePath="Y"  Title="Gauche" DependentValueBinding="{Binding SasCentre}" IndependentValueBinding="{Binding PerDate }" >
                            <charting:LineSeries.DataPointStyle>
                                <Style TargetType="charting:DataPoint">
                                    <Setter Property="Visibility" Value="Visible"/>
                                    <Setter Property="Background" Value="{StaticResource Ligne_Jaune}"/>
     
                                </Style>
                            </charting:LineSeries.DataPointStyle>
                        </toolkit:LineSeries>
     
     
                    </toolkit:Chart>
    Dans mon code behind, je mets à chacune des deux lineSerie un itemSource qui est une liste d’un objet « maison » qui comprend une date (PerDate) , une valeur gauche (SasGauche) et une valeur centre (SasCentre).
    L’une des liste comprend douze éléments (de janvier à décembre) alors que l’autre n’en contient que trois(de mai à juillet).

    Le résultat est que mon graphique s’affiche correctement, les douze valeurs d’une lineSerie et les trois de l’autre. Comme j’ai une donnée par date, l’axe de mes X affiche bien les douze dates allant du 1/1/2010 au 1/12/2010.
    Mon problème, c’est que je ne veux pas afficher la date complète sur mon axe des X mais seulement le mois (par exemple « Jan » pour le 1/1/2010.
    Pour cela, j’ai fait un converter qui me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Return myDtValue.ToString("MMM")
    et que j'appelle comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IndependentValueBinding="{Binding PerDate,Converter=myLettreMoisConverter }"
    Ca fonctionne, mais le résultat de mon graphique est que maintenant les mois sont classés en commençant par mai-juin-juillet et puis janvier-février-avril-Aout-Septembre-…
    Donc les mois qui sont contenus dans les deux lineseries (mai-juin-juillet) s’affichent en premier.
    Pourquoi ?
    Il faut dire que la documentation sur des propriétés comme « IndependentValuePath » ou « DependentValueBinding » sont quasi inexistantes.

    J’aimerais donc que mes périodes restent classées de janvier à décembre mais en affichant « Jan », « fév », « mar », « avr »,….

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Je vais donner la raison mais pas de solution (je ne l'ai pas):
    Lorsque tu utilises ton converter, ca ne fait pas que convertir pour la présentation mais aussi pour la construction. Du coup, lui, au lieu de trier des dates, il trie des strings qui ont le nom des mois comme contenu! Pas glop

    La solution serait peut-être de templater l'axe et faire la conversion uniquement la dedans.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut
    Merci pour ta réponse, je me doutais d'un truc du genre donc j'ai aussi essayé de faire un stringFormat mais sans succès.

    En fait je me demandais à quoi sert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DependentValuePath="X" IndependentValuePath="Y"
    car que je les mette ou pas, avec ou sans lineConverter, mon graphique fonctionne de la même manière.

    En fait il devrait y avoir un moyen de différencier la donnée qui est utilisée pour l'ordonancement de l'axe des X de la donnée qui s'affiche.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut
    Alors voilà, après de nombreuses recherches, il y a moyen de formater les labels de l'axe des X sans que ça ne perturbe l'ordre de l'axe des X.

    Il faut pour ça définir l'axe des X comme étant un "DateTimeAxis " et puis faire un Setter de sa propriété StringFormat...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <toolkit:Chart.Axes>
                            <toolkit:LinearAxis x:Name="axeYSales" Maximum="100" Minimum="0"   FontSize="8"  Interval="10" Orientation="Y" ShowGridLines= "True" />
                            <toolkit:DateTimeAxis x:Name="axeXSales" Orientation="X" FontFamily="Toyota Display" FontSize="9"  >
                                <toolkit:DateTimeAxis.AxisLabelStyle>
                                    <Style TargetType="toolkit:DateTimeAxisLabel">
                                        <Setter Property="StringFormat" Value="{}{0:MMM} "></Setter>
     
                                    </Style>
                                </toolkit:DateTimeAxis.AxisLabelStyle>
                            </toolkit:DateTimeAxis>
    Le résultat est alors l'affichage de "Jan", "Fév", "Mar",....
    C'est donc OK. Pour que ce soit parfait, il faudrait qu'il me l'affiche en anglais. Quelqu'un sait-il comment changer la culture à ce niveau ?

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par Golzinne Voir le message
    Alors voilà, après de nombreuses recherches, il y a moyen de formater les labels de l'axe des X sans que ça ne perturbe l'ordre de l'axe des X.

    Il faut pour ça définir l'axe des X comme étant un "DateTimeAxis " et puis faire un Setter de sa propriété StringFormat...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <toolkit:Chart.Axes>
                            <toolkit:LinearAxis x:Name="axeYSales" Maximum="100" Minimum="0"   FontSize="8"  Interval="10" Orientation="Y" ShowGridLines= "True" />
                            <toolkit:DateTimeAxis x:Name="axeXSales" Orientation="X" FontFamily="Toyota Display" FontSize="9"  >
                                <toolkit:DateTimeAxis.AxisLabelStyle>
                                    <Style TargetType="toolkit:DateTimeAxisLabel">
                                        <Setter Property="StringFormat" Value="{}{0:MMM} "></Setter>
     
                                    </Style>
                                </toolkit:DateTimeAxis.AxisLabelStyle>
                            </toolkit:DateTimeAxis>
    Le résultat est alors l'affichage de "Jan", "Fév", "Mar",....
    C'est donc OK. Pour que ce soit parfait, il faudrait qu'il me l'affiche en anglais. Quelqu'un sait-il comment changer la culture à ce niveau ?
    Il faut se servir des options de globalisation. Notamment Thread.Current.UiCulture et Thread.Current.Culture

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut
    Peux-tu m'en dire plus sur les
    options de globalisation. Notamment Thread.Current.UiCulture et Thread.Current.Culture
    Aurais-tu un exemple ?

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

Discussions similaires

  1. Mon site n'est plus référencé par google : Pourquoi ? Que faire ?
    Par brassmonkey dans le forum Référencement
    Réponses: 9
    Dernier message: 19/09/2012, 00h24
  2. mon lecteur n'est plus recconnu
    Par eilgin dans le forum Composants
    Réponses: 4
    Dernier message: 04/08/2010, 14h07
  3. Réponses: 4
    Dernier message: 04/06/2009, 09h51
  4. [Svn] Mon projet n'est plus versionné !
    Par cassy dans le forum Eclipse
    Réponses: 2
    Dernier message: 14/05/2008, 15h04
  5. [MyEclipse] Mon application n'est plus lancée
    Par Christophe P. dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/09/2007, 16h17

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