/// <summary> /// Updates the symbol. /// </summary> /// <param name="symbol">The Symbol String</param> private void SetSymbol(string symbol) { ChartAdornmentInfoBase adornmentInfo = adornment.Series.adornmentInfo; if (symbol != "Custom") { if (this.Children.Contains(m_symbolPresenter)) { this.Children.Remove(m_symbolPresenter); } if (!this.Children.Contains(PredefinedSymbol)) { this.Children.Add(PredefinedSymbol); } if (Double.IsNaN(adornment.YData) || double.IsNaN(adornment.XData)) { this.Children.Remove(PredefinedSymbol); } PredefinedSymbol.DataContext = this; this.PredefinedSymbol.Template = ChartDictionaries.GenericSymbolDictionary[symbol + "Template"] as ControlTemplate; } else { if (adornmentInfo.SymbolTemplate != null && !this.Children.Contains(m_symbolPresenter)) { this.Children.Add(m_symbolPresenter); } if (this.Children.Contains(PredefinedSymbol)) { this.Children.Remove(PredefinedSymbol); } if (Double.IsNaN(adornment.YData) || double.IsNaN(adornment.XData)) { this.Children.Remove(PredefinedSymbol); } } }
/// <summary> /// Sets the binding between the adornment symbol and <see cref="ChartAdornmentInfo"/> /// </summary> /// <param name="adornment"></param> private void SetContentBinding(ChartAdornment adornment) { ChartAdornmentInfoBase adornmentInfo = adornment.Series.adornmentInfo; if (adornmentInfo.ShowMarker) { this.SetBinding(ChartAdornmentContainer.SymbolProperty , CreateAdormentBinding("Symbol", adornmentInfo)); this.PredefinedSymbol.SetBinding(Control.HeightProperty , CreateAdormentBinding("SymbolHeight", adornmentInfo)); this.PredefinedSymbol.SetBinding(Control.WidthProperty , CreateAdormentBinding("SymbolWidth", adornmentInfo)); if (adornment.Series is ChartSeries && adornment.Series.ActualArea.SelectedSeriesCollection.Contains(adornment.Series) && adornmentInfo.HighlightOnSelection && adornment.Series.ActualArea.GetSeriesSelectionBrush(adornment.Series) != null && adornment.Series.ActualArea.GetEnableSeriesSelection()) { this.PredefinedSymbol.SetBinding(Control.BackgroundProperty , CreateAdormentBinding("SeriesSelectionBrush", adornment.Series)); } else if (adornment.Series is ISegmentSelectable && adornment.Series.SelectedSegmentsIndexes.Contains(adornment.Series.ActualData.IndexOf(adornment.Item)) && adornmentInfo.HighlightOnSelection && adornment.Series.ActualArea.GetEnableSegmentSelection() && (adornment.Series as ISegmentSelectable).SegmentSelectionBrush != null) { this.PredefinedSymbol.SetBinding(Control.BackgroundProperty , CreateAdormentBinding("SegmentSelectionBrush", adornment.Series)); } else if (adornmentInfo.SymbolInterior == null) { this.PredefinedSymbol.SetBinding(SymbolControl.BackgroundProperty , CreateAdormentBinding("Interior", adornment)); } else { this.PredefinedSymbol.SetBinding(Control.BackgroundProperty , CreateAdormentBinding("SymbolInterior", adornmentInfo)); } if (adornment.Series is ChartSeries && adornment.Series.ActualArea.SelectedSeriesCollection.Contains(adornment.Series) && adornmentInfo.HighlightOnSelection && adornment.Series.ActualArea.GetSeriesSelectionBrush(adornment.Series) != null && adornment.Series.ActualArea.GetEnableSeriesSelection()) { this.PredefinedSymbol.SetBinding(Control.BorderBrushProperty , CreateAdormentBinding("SeriesSelectionBrush", adornment.Series)); } else if (adornment.Series is ISegmentSelectable && adornment.Series.SelectedSegmentsIndexes.Contains(adornment.Series.ActualData.IndexOf(adornment.Item)) && adornmentInfo.HighlightOnSelection && adornment.Series.ActualArea.GetEnableSegmentSelection() && (adornment.Series as ISegmentSelectable).SegmentSelectionBrush != null) { this.PredefinedSymbol.SetBinding(Control.BorderBrushProperty , CreateAdormentBinding("SegmentSelectionBrush", adornment.Series)); } else { this.PredefinedSymbol.SetBinding(Control.BorderBrushProperty , CreateAdormentBinding("SymbolStroke", adornmentInfo)); } if (adornmentInfo.SymbolTemplate != null) { this.m_symbolPresenter.SetBinding(ContentPresenter.ContentTemplateProperty , CreateAdormentBinding("SymbolTemplate", adornmentInfo)); } this.m_symbolPresenter.SetBinding(ContentPresenter.ContentProperty , CreateAdormentBinding("", adornment)); } }