// -------------------------------------------------------------------------------------------------------------------- // // Copyright (c) 2014 OxyPlot contributors // // // Represents a control that displays a . // // -------------------------------------------------------------------------------------------------------------------- using Avalonia; namespace OxyPlot.Avalonia { using global::Avalonia.Controls; /// /// Represents a control that displays a . /// public partial class Legend : Control { /// /// The internal model. /// private readonly Legends.Legend InternalLegend; /// /// Initializes static members of the class. /// public Legend() { this.InternalLegend = new Legends.Legend(); } /// /// Synchronize properties in the internal Plot model /// private void SynchronizeProperties() { var m = this.InternalLegend; m.LegendTextColor = this.LegendTextColor.ToOxyColor(); m.LegendTitle = this.LegendTitle; m.LegendTitleColor = this.LegendTitleColor.ToOxyColor(); m.LegendTitleFont = this.LegendTitleFont; m.LegendTitleFontSize = this.LegendTitleFontSize; m.LegendTitleFontWeight = (int)this.LegendTitleFontWeight; m.LegendFont = this.LegendFont; m.LegendFontSize = this.LegendFontSize; m.LegendFontWeight = (int)this.LegendFontWeight; m.LegendSymbolLength = this.LegendSymbolLength; m.LegendSymbolMargin = this.LegendSymbolMargin; m.LegendPadding = this.LegendPadding; m.LegendColumnSpacing = this.LegendColumnSpacing; m.LegendItemSpacing = this.LegendItemSpacing; m.LegendLineSpacing = this.LegendLineSpacing; m.LegendMargin = this.LegendMargin; m.LegendMaxHeight = this.LegendMaxHeight; m.LegendMaxWidth = this.LegendMaxWidth; m.LegendBackground = this.LegendBackground.ToOxyColor(); m.LegendBorder = this.LegendBorder.ToOxyColor(); m.LegendBorderThickness = this.LegendBorderThickness; m.LegendPlacement = this.LegendPlacement; m.LegendPosition = this.LegendPosition; m.LegendOrientation = this.LegendOrientation; m.LegendItemOrder = this.LegendItemOrder; m.LegendItemAlignment = this.LegendItemAlignment.ToHorizontalAlignment(); m.LegendSymbolPlacement = this.LegendSymbolPlacement; m.IsLegendVisible = this.IsLegendVisible; m.EdgeRenderingMode = this.EdgeRenderingMode; } /// /// Handles changes in appearance. /// /// The sender. /// The instance containing the event data. protected static void AppearanceChanged(AvaloniaObject d, AvaloniaPropertyChangedEventArgs e) { ((Legend)d).OnVisualChanged(); } /// /// The on visual changed handler. /// protected void OnVisualChanged() { (this.Parent as IPlot)?.ElementAppearanceChanged(this); } /// /// Handles changes in data. /// /// The sender. /// The instance containing the event data. protected static void DataChanged(AvaloniaObject d, AvaloniaPropertyChangedEventArgs e) { ((Legend)d).OnDataChanged(); } /// /// The on data changed handler. /// protected void OnDataChanged() { (this.Parent as IPlot)?.ElementDataChanged(this); } static Legend() { IsLegendVisibleProperty.Changed.AddClassHandler(AppearanceChanged); LegendTextColorProperty.Changed.AddClassHandler(AppearanceChanged); LegendTitleProperty.Changed.AddClassHandler(AppearanceChanged); LegendTitleColorProperty.Changed.AddClassHandler(AppearanceChanged); LegendTitleFontProperty.Changed.AddClassHandler(AppearanceChanged); LegendTitleFontSizeProperty.Changed.AddClassHandler(AppearanceChanged); LegendTitleFontWeightProperty.Changed.AddClassHandler(AppearanceChanged); LegendFontProperty.Changed.AddClassHandler(AppearanceChanged); LegendFontSizeProperty.Changed.AddClassHandler(AppearanceChanged); LegendFontWeightProperty.Changed.AddClassHandler(AppearanceChanged); LegendSymbolLengthProperty.Changed.AddClassHandler(AppearanceChanged); LegendSymbolMarginProperty.Changed.AddClassHandler(AppearanceChanged); LegendPaddingProperty.Changed.AddClassHandler(AppearanceChanged); LegendColumnSpacingProperty.Changed.AddClassHandler(AppearanceChanged); LegendItemSpacingProperty.Changed.AddClassHandler(AppearanceChanged); LegendLineSpacingProperty.Changed.AddClassHandler(AppearanceChanged); LegendMarginProperty.Changed.AddClassHandler(AppearanceChanged); LegendMaxHeightProperty.Changed.AddClassHandler(AppearanceChanged); LegendMaxWidthProperty.Changed.AddClassHandler(AppearanceChanged); LegendBackgroundProperty.Changed.AddClassHandler(AppearanceChanged); LegendBorderProperty.Changed.AddClassHandler(AppearanceChanged); LegendBorderThicknessProperty.Changed.AddClassHandler(AppearanceChanged); LegendPlacementProperty.Changed.AddClassHandler(AppearanceChanged); LegendPositionProperty.Changed.AddClassHandler(AppearanceChanged); LegendOrientationProperty.Changed.AddClassHandler(AppearanceChanged); LegendItemOrderProperty.Changed.AddClassHandler(AppearanceChanged); LegendItemAlignmentProperty.Changed.AddClassHandler(AppearanceChanged); LegendSymbolPlacementProperty.Changed.AddClassHandler(AppearanceChanged); IsLegendVisibleProperty.Changed.AddClassHandler(AppearanceChanged); EdgeRenderingModeProperty.Changed.AddClassHandler(AppearanceChanged); } /// /// Creates the internal legend. /// /// The internal legend. public Legends.Legend CreateModel() { this.SynchronizeProperties(); return this.InternalLegend; } } }