/// <summary> /// Create visual object of the Legend /// </summary> internal void CreateVisualObject() { if (!(Boolean)Enabled) { Visual = null; return; } ElementData tag = new ElementData { Element = this, VisualElementName = "Legend" }; Visual = new Border() { Tag = tag }; Grid innerGrid = new Grid() { Tag = tag }; (Visual as Border).Child = innerGrid; LegendContainer = new StackPanel() { Tag = tag }; if (!String.IsNullOrEmpty(Title)) { Title legendTitle = new Title(); ApplyFontProperty(legendTitle); if (TitleBackground != null) legendTitle.InternalBackground = TitleBackground; legendTitle.InternalHorizontalAlignment = TitleAlignmentX; legendTitle.InternalVerticalAlignment = VerticalAlignment.Top; legendTitle.TextAlignment = TitleTextAlignment; legendTitle.CreateVisualObject(tag); legendTitle.Measure(new Size(Double.MaxValue, Double.MaxValue)); if (legendTitle.DesiredSize.Width > InternalMaxWidth) legendTitle.Visual.Width = InternalMaxWidth; LegendContainer.Children.Add(legendTitle.Visual); } Grid legendContent = CreateLegendContent(); legendContent.Tag = tag; LegendContainer.Children.Add(legendContent); LegendContainer.VerticalAlignment = VerticalAlignment.Center; LegendContainer.HorizontalAlignment = HorizontalAlignment.Stretch; ApplyVisualProperty(); innerGrid.Children.Add(LegendContainer); Visual.Cursor = this.Cursor; Visual.Measure(new Size(Double.MaxValue, Double.MaxValue)); if (!Double.IsPositiveInfinity(InternalMaxHeight) && InternalMaxHeight < Visual.DesiredSize.Height) Visual.Height = InternalMaxHeight; else Visual.Height = Visual.DesiredSize.Height; if (!Double.IsPositiveInfinity(InternalMaxWidth) && InternalMaxWidth < Visual.DesiredSize.Width + InternalPadding.Left) Visual.Width = InternalMaxWidth; else if (Layout == Layouts.GridLayout) Visual.Width = Visual.DesiredSize.Width + InternalPadding.Left; else Visual.Width = Visual.DesiredSize.Width; PlotArea plotArea = (Chart as Chart).PlotArea; RectangleGeometry rectGeo = new RectangleGeometry(); rectGeo.Rect = new Rect(InternalBorderThickness.Left, InternalBorderThickness.Top, Visual.Width - InternalBorderThickness.Left - InternalBorderThickness.Right, Visual.Height - InternalBorderThickness.Top - InternalBorderThickness.Bottom); rectGeo.RadiusX = CornerRadius.TopLeft; rectGeo.RadiusY = CornerRadius.TopRight; LegendContainer.Clip = rectGeo; ApplyShadow(innerGrid); if (VerticalAlignment == System.Windows.VerticalAlignment.Bottom && (HorizontalAlignment == System.Windows.HorizontalAlignment.Center || HorizontalAlignment == System.Windows.HorizontalAlignment.Left || HorizontalAlignment == System.Windows.HorizontalAlignment.Right || HorizontalAlignment == System.Windows.HorizontalAlignment.Stretch)) Visual.Margin = new Thickness(0, DEFAULT_MARGIN, 0, 0); else if (VerticalAlignment == System.Windows.VerticalAlignment.Top && (HorizontalAlignment == System.Windows.HorizontalAlignment.Center || HorizontalAlignment == System.Windows.HorizontalAlignment.Left || HorizontalAlignment == System.Windows.HorizontalAlignment.Right || HorizontalAlignment == System.Windows.HorizontalAlignment.Stretch)) Visual.Margin = new Thickness(0, 0, 0, DEFAULT_MARGIN); else if (HorizontalAlignment == System.Windows.HorizontalAlignment.Left && (VerticalAlignment == System.Windows.VerticalAlignment.Center || VerticalAlignment == System.Windows.VerticalAlignment.Stretch)) Visual.Margin = new Thickness(0, 0, DEFAULT_MARGIN, 0); else if (HorizontalAlignment == System.Windows.HorizontalAlignment.Right && (VerticalAlignment == System.Windows.VerticalAlignment.Center || VerticalAlignment == System.Windows.VerticalAlignment.Stretch)) Visual.Margin = new Thickness(DEFAULT_MARGIN, 0, 0, 0); }
/// <summary> /// Create visual object of the Legend /// </summary> internal void CreateVisualObject() { if (!(Boolean)Enabled) { Visual = null; return; } ElementData tag = new ElementData { Element = this, VisualElementName = "Legend" }; Visual = new Border() { Tag = tag }; Grid innerGrid = new Grid() { Tag = tag }; (Visual as Border).Child = innerGrid; LegendContainer = new StackPanel() { Tag = tag }; if (!String.IsNullOrEmpty(Title)) { Title legendTitle = new Title(); ApplyFontProperty(legendTitle); if (TitleBackground != null) legendTitle.InternalBackground = TitleBackground; legendTitle.InternalHorizontalAlignment = TitleAlignmentX; legendTitle.InternalVerticalAlignment = VerticalAlignment.Top; legendTitle.TextAlignment = TitleTextAlignment; legendTitle.CreateVisualObject(tag); legendTitle.Measure(new Size(Double.MaxValue, Double.MaxValue)); if (legendTitle.DesiredSize.Width > InternalMaxWidth) legendTitle.Visual.Width = InternalMaxWidth; LegendContainer.Children.Add(legendTitle.Visual); } Grid legendContent = CreateLegendContent(); legendContent.Tag = tag; LegendContainer.Children.Add(legendContent); LegendContainer.VerticalAlignment = VerticalAlignment.Center; LegendContainer.HorizontalAlignment = HorizontalAlignment.Center; ApplyVisualProperty(); innerGrid.Children.Add(LegendContainer); Visual.Cursor = this.Cursor; Visual.Measure(new Size(Double.MaxValue, Double.MaxValue)); if (!Double.IsPositiveInfinity(InternalMaxHeight) && InternalMaxHeight < Visual.DesiredSize.Height) Visual.Height = InternalMaxHeight; else Visual.Height = Visual.DesiredSize.Height; if (!Double.IsPositiveInfinity(InternalMaxWidth) && InternalMaxWidth < Visual.DesiredSize.Width + InternalPadding.Left) Visual.Width = InternalMaxWidth; else Visual.Width = Visual.DesiredSize.Width + InternalPadding.Left; }