簡體   English   中英

如何自定義WPF工具包折線圖中的每個數據點的工具提示?

[英]How to customize a tooltip for each individual datapoint in a wpf toolkit lineseries chart?

我已經看到了幾個有關為單行系列進行自定義工具提示的問題。

我需要每個數據點的自定義工具提示。 我想在工具提示中添加更多內容,而不僅僅是依賴值路徑和獨立值路徑。

示例我在同一行上有2個數據點,一個的值(Y軸)為2,日期(x軸)為4/28/2016,且配置為A。另一個的值為3,日期為2016年4月29日,配置B。

我還將如何顯示配置? 這都是在后面的代碼中完成的,因為我有動態數量的lineseries。 因此,我不能只為xaml中的每個線系列分配樣式。

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

這是我創建工具提示樣式的代碼。

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;

我通過使用Line系列上的Tag弄清楚了。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM