private static void OnPaletteModeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (e.OldValue.Equals(e.NewValue)) { return; } RangeBarSeries series = d as RangeBarSeries; series.paletteModeCache = (SeriesPaletteMode)e.NewValue; if (series.paletteModeCache == SeriesPaletteMode.Series) { foreach (var item in series.legendItems) { series.Chart.LegendInfosInternal.Remove(item.Value); } series.legendItems = null; } else { series.legendItems = new Dictionary <DataPoint, LegendItem>(); } series.InvalidatePalette(); }
internal override void UpdateLegendItem(FrameworkElement visual, DataPoint dataPoint) { if (visual != null && this.IsVisibleInLegend) { LegendItem item; bool titleUpdateNeeded = false; if (this.paletteModeCache == SeriesPaletteMode.DataPoint) { if (!this.legendItems.TryGetValue(dataPoint, out item)) { item = new LegendItem(); titleUpdateNeeded = true; this.legendItems.Add(dataPoint, item); // TODO refactor this. this.Chart.LegendInfosInternal.Add(item); } RangeBarSeries.UpdateLegendItemProperties(item, (Brush)visual.GetValue(Border.BackgroundProperty), (Brush)visual.GetValue(Border.BorderBrushProperty)); } else { item = this.LegendItems.FirstOrDefault(); this.UpdateLegendItemProperties((Brush)visual.GetValue(Border.BackgroundProperty), (Brush)visual.GetValue(Border.BorderBrushProperty)); } if (item != null && titleUpdateNeeded) { if (this.LegendTitleBinding != null) { this.UpdateLegendTitle(dataPoint, item); } else if (this.LegendTitle != null) { item.Title = this.LegendTitle; } } } }