2016-05-21 5 views

Antwort

1

Die LegendBox Klasse hat SeriesTitle * Ereignisse. Sie können es so ziemlich nutzen:

m_chart.BeginUpdate(); 


ViewXY viewXY = m_chart.ViewXY; 
viewXY.XAxes[0].ValueType = AxisValueType.Number; 

int seriesCount = 10; 

//Create series that will highlight the other series 

for (int i = 0; i < seriesCount; i++) 
{ 
    PointLineSeries s = new PointLineSeries(viewXY, viewXY.XAxes[0], viewXY.YAxes[0]); 
    s.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i]; 
    s.Points = GenerateSomeRandomData((i+1) * 20); 
    s.Title.Text = "Series " + i.ToString(); 
    viewXY.PointLineSeries.Add(s); 
} 
viewXY.LegendBox.MoveFromSeriesTitle = false; 
viewXY.LegendBox.SeriesTitleMouseClick += LegendBox_SeriesTitleMouseClick; 
viewXY.LegendBox.Layout = LegendBoxLayout.Vertical; 

m_chart.EndUpdate(); 

und Definition der Event-Handler wie folgt aus:

void LegendBox_SeriesTitleMouseClick(object sender, System.Windows.RoutedEventArgs e) 
    { 
     m_chart.BeginUpdate(); 

     foreach (PointLineSeries s in m_chart.ViewXY.PointLineSeries) 
     { 
      s.SetHighlight(); 

      //s.RemoveHighlight(); //To remove highlight, use this 
     } 
     m_chart.EndUpdate(); 
    } 

dann auf jedem Serientitel klicken und alle Serie hervorgehoben bekommen. Basierend auf der Einstellung series.MouseHighlight-Eigenschaft wird die hellere dicke Linie geändert, die animierte Farbe von hell nach dunkel oder die ursprüngliche Farbe beibehalten.

All the series get highlighted when you move mouse over any series title in the Legend box

Hoffentlich hilft :-)

+0

Kudos Mann! Das funktioniert. Aber wenn ich nur einige dieser Serien in der Legende zeigen und den Rest verstecken will, wie soll ich das machen? –

+0

Sie können das tun, indem Sie series.ShowInLegendBox = false für alle Serien festlegen, die Sie nicht im Legendenfeld sehen möchten. –

+0

Danke sehr hilfreiche Antwort. –

Verwandte Themen