private RotatableControl CreateTickMark(bool major) { RotatableControl result = new RotatableControl(); TickMark tickMark = new TickMark(); tickMark.SetBinding(FrameworkElement.StyleProperty, (BindingBase) new Binding(major ? "MajorTickMarkStyle" : "MinorTickMarkStyle") { Source = (object)this.Axis }); result.Child = (FrameworkElement)tickMark; tickMark.PositionChanged += (EventHandler)((s, e) => { this.PrepareTickMark(result); XYAxisElementsPanel.SetPosition((UIElement)result, ((TickMark)s).Position); }); return(result); }
private void PrepareTickMark(RotatableControl item) { double num = 0.0; switch (this.Orientation) { case Orientation.Horizontal: num = this.IsInverted ? 180.0 : 0.0; break; case Orientation.Vertical: num = this.IsInverted ? 90.0 : -90.0; break; } if (((TickMark)item.Child).Position == AxisElementPosition.Inside) { num += 180.0; } if (item.RotationAngle == num) { return; } item.RotationAngle = num; }
protected override void Populate(double availableLength) { this._majorTickMarkPool.ReleaseAll(); this._minorTickMarkPool.ReleaseAll(); if (this.Presenter.IsMinorTickMarksVisible) { this._majorTickMarkPool.AdjustPoolSize(); } try { this.PrepareAxisLine(); this.PrepareScrollBar(); if (!this.Axis.ShowMajorTickMarks && !this.Presenter.IsMinorTickMarksVisible) { return; } foreach (ScaleElementDefinition elementDefinition in (IEnumerable <ScaleElementDefinition>) new List <ScaleElementDefinition>((IEnumerable <ScaleElementDefinition>)Enumerable.OrderBy <ScaleElementDefinition, int>(Enumerable.Where <ScaleElementDefinition>(this.Presenter.GetScaleElements(), (Func <ScaleElementDefinition, bool>)(p => p.Kind == ScaleElementKind.Tickmark)), (Func <ScaleElementDefinition, int>)(p => p.Group != ScaleElementGroup.Major ? 0 : 1)))) { if (elementDefinition.Group == ScaleElementGroup.Major && this.Axis.ShowMajorTickMarks && !this.LabelsUseCategoryTickmarks) { EnumerableFunctions.ForEachWithIndex <ScalePosition>(Enumerable.Where <ScalePosition>(elementDefinition.Positions, (Func <ScalePosition, bool>)(p => { if (p.Position >= 0.0) { return(p.Position <= 1.0); } return(false); })), (Action <ScalePosition, int>)((position, index) => { RotatableControl rotatableControl = this._majorTickMarkPool.Get(this.Axis); XYAxisElementsPanel.SetCoordinate((UIElement)rotatableControl, position.Position); XYAxisElementsPanel.SetPosition((UIElement)rotatableControl, ((TickMark)rotatableControl.Child).Position); })); } if (elementDefinition.Group == ScaleElementGroup.Minor && this.Presenter.IsMinorTickMarksVisible) { EnumerableFunctions.ForEachWithIndex <ScalePosition>(Enumerable.Where <ScalePosition>(elementDefinition.Positions, (Func <ScalePosition, bool>)(p => { if (DoubleHelper.GreaterOrEqualWithPrecision(p.Position, 0.0)) { return(DoubleHelper.LessOrEqualWithPrecision(p.Position, 1.0)); } return(false); })), (Action <ScalePosition, int>)((position, index) => { RotatableControl rotatableControl = this._minorTickMarkPool.Get(this.Axis); XYAxisElementsPanel.SetCoordinate((UIElement)rotatableControl, position.Position); XYAxisElementsPanel.SetPosition((UIElement)rotatableControl, ((TickMark)rotatableControl.Child).Position); })); } } } finally { if (!this.Presenter.IsMinorTickMarksVisible) { this._majorTickMarkPool.AdjustPoolSize(); } this._minorTickMarkPool.AdjustPoolSize(); } }
public override void OnApplyTemplate() { base.OnApplyTemplate(); this._rotatableControl = this.GetTemplateChild("RotatableControl") as RotatableControl; this.UpdateActualContent(); }