Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Silverlight] Chart & Tooltip

Charts dynamiques

    4 juillet 2011 à 11:47:46

    Bonjour à tous,

    Dans le cadre d'un projet, je me penche sur Silverlight afin de réaliser des graphiques dynamiques en fonction de données externes au sein d'une application Intranet réalisée en PHP.

    Le flow est le suivant:
    - obtention des données en PHP
    - génération d'un fichier XML
    - sortie HTML avec balise object et demande du .XAP de l'appli silverlight

    Ce flow fonctionne : avec l'application Silverlight réalisée, qui récupère le fichier XML et le parse via Linq pour en tirer la liste des séries, des données, etc.

    if (type == "line")
    {
      LineSeries graphicSerie = new LineSeries();
      graphicSerie.SetBinding(LineSeries.ItemsSourceProperty, new Binding());
    
      if (!string.IsNullOrEmpty(color))
      {
        var style = new Style(typeof(LineDataPoint));
        SolidColorBrush bgBrush = new SolidColorBrush(truColor);
        var setterBg = new Setter(LineDataPoint.BackgroundProperty, bgBrush);
        style.Setters.Add(setterBg);
        graphicSerie.DataPointStyle = style;
      }
                            
      graphicSerie.IndependentValueBinding = new Binding("X");
      graphicSerie.DependentValueBinding = new Binding("Y") { TargetNullValue = null, FallbackValue = null }; // tentative de forcer des points particuliers à ne pas être affichés (échec, mais là n'est pas le souci)
      graphicSerie.ItemsSource = res;
    
      graphicSerie.Title = (string)serie.Attribute("name");
    
    // tooltip
      ToolTip tt = new ToolTip();
      tt.Content = "My Tooltip";
      ToolTipService.SetToolTip(graphicSerie, tt);
    // tooltip
    
      int axisIndex = Convert.ToInt32((string)serie.Attribute("yaxis")) - 1;
      graphicSerie.DependentRangeAxis = yAxis.ElementAt(axisIndex);
                            
      myChart.Series.Add(graphicSerie);
    
      serieIndex++;
    }
    


    Seul souci : le formatage des tooltips. Le code ci-dessus présente le cas d'une série de type "line". Afin de tester les tooltips dynamiques (donc SANS passer par du XAML qui est statique), j'ai mis une valeur arbitraire, et ai tenté de setter une tooltip sur chaque série de type line.

    Résultat : la tooltip est effective sur la ligne mais pas sur les points qui gardent leur tooltip !

    Toutes mes tentatives pour setter la tooltip sur les points se sont soldés par un échec : l'objet Series et ses enfants n'ont PAS de propriété ToolTip ou approchant, une boucle sur les points est impossible car générant une exception : vu que l'on est dans du DataBinding, les objets Points n'existent pas réellement avant la génération du chart...

    Après avoir passé 3 jours à tourner en rond sur ce problème, je me pose des questions.

    Est-il possible de changer les tooltips ? Sur les points en eux-mêmes ? Comment ?

    J'utilise Silverlight Toolkit avec module Chart (DataVisualization), pour Silverlight 4 (des solutions existent pour SL2, mais ont été retirées depuis, allez comprendre).

    Merci d'avance,


    Lpu8er
    • Partager sur Facebook
    • Partager sur Twitter

    [Silverlight] Chart & Tooltip

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown