2016-05-02 14 views
0

Ich habe mehrere Fragen über das Erstellen eines benutzerdefinierten Tooltips für eine einzelne Zeilenserie gesehen.Wie kann man einen Tooltip für jeden einzelnen Datenpunkt in einem wpf-Toolkit-Lineseries-Diagramm anpassen?

Ich brauche einen benutzerdefinierten Tool-Tipp für jeden Datenpunkt. Ich möchte dem Tool-Tipp mehr hinzufügen als nur den Pfad des abhängigen Werts und den Pfad des unabhängigen Werts.

Beispiel habe ich 2 Datenpunkte auf der gleichen Linie einer mit einem Wert (Y-Achse) von 2, Datum (X-Achse) von 2016.04.28, und der Konfiguration von A. Der andere hat ein Wert von 3, Datum des 29.04.2016 und Konfiguration von B.

Wie würde ich auch die Konfigurationen anzeigen? Dies ist alles in Code hinter getan, da ich eine dynamische Anzahl von Serien haben. Also kann ich nicht jeder Zeile im XAML einen Style zuweisen.

var MyLineSeries = new LineSeries(); 
lMyLineSeries.DependentValuePath = "Y"; 
lMyLineSeries.IndependentValuePath = "X"; 
lMyLineSeries.DataPointStyle = lToolTipDataPointStyle; 

Dies ist mein Code zum Erstellen des Tooltip-Stils.

var lToolTipDataPointStyle = new Style(typeof(LineDataPoint)); 
var lTemplate = new ControlTemplate(typeof(LineDataPoint)); 
var lGridElement = new FrameworkElementFactory(typeof(Border)); 

//Tooltip 
var lStackPanel = new StackPanel(); 

var lValueContentControl = new ContentControl(); 
lValueContentControl.SetBinding(ContentControl.ContentProperty, new Binding(myLineSeries.DependentValuePath)); 
lValueContentControl.ContentStringFormat = "Value: {0}"; 

var lConfigurationContentControl = new ContentControl(); 
lConfigurationContentControl.SetBinding(ContentControl.ContentProperty, new Binding())//This is what Idk what to bind to??? 

lConfigurationContentControl.ContentStringFormat = "Configuration: {0}"; 

lStackPanel.Children.Add(lValueContentControl); 
lStackPanel.Children.Add(lConfigurationContentControl); 

lGridElement.SetValue(ToolTipService.ToolTipProperty, lStackPanel); 


var lEllipseElement = new FrameworkElementFactory(typeof(Ellipse)); 
lEllipseElement.SetValue(Ellipse.StrokeThicknessProperty, new TemplateBindingExtension(Border.BorderThicknessProperty)); 
lEllipseElement.SetValue(Ellipse.StrokeProperty, new TemplateBindingExtension(Border.BorderBrushProperty)); 
lEllipseElement.SetValue(Ellipse.FillProperty, new TemplateBindingExtension(Grid.BackgroundProperty)); 

lGridElement.AppendChild(lEllipseElement); 
lTemplate.VisualTree = lGridElement; 

var lTemplateSetter = new Setter(); 
lTemplateSetter.Property = LineDataPoint.TemplateProperty; 
lTemplateSetter.Value = lTemplate; 

lToolTipDataPointStyle.Setters.Add(lTemplateSetter); 

return lToolTipDataPointStyle; 
+0

_Ich brauche ein benutzerdefiniertes Tool-Tipp für jeden Datenpunkt._ Wie anders wird ein 'Tooltip' von dem anderen? Was genau ändert sich? Nur die Information selbst oder die Struktur? Gib ein Beispiel. – jsanalytics

+0

Wenn Sie zum Beispiel nur 'X',' Y' und 'Config' anzeigen möchten, brauchen Sie keine anderen' DataPointStyles'. Es ist der gleiche Stil nur mit anderen Daten. Und in diesem Fall sollten Sie es mit XAML tun. – jsanalytics

+0

Danke @jstreet Ich habe tatsächlich einen Weg gefunden, direkt nachdem ich die Frage gepostet habe, habe einfach noch keine Zeit zu antworten. Danke für die Eingabe. – mattyb

Antwort

0

Ich habe es herausgefunden, indem Sie die Tag on the Line-Serie verwenden.

myLineSeries.Tag = "Configuration"; 
var lConfigurationContentControl = new ContentControl(); 
lConfigurationContentControl.SetBinding(ContentControl.ContentProperty, new Binding(myLineSeries.Tag.ToString())) 

lConfigurationContentControl.ContentStringFormat = "Configuration: {0}"; 
Verwandte Themen