public override void UpdateVisual(RadialSegment segment, double startAngle)
        {
            if (segment == null || !segment.TargetItem.CanNavigate || segment.LayoutSlot == RadialLayoutSlot.Invalid)
            {
                return;
            }

            NavigationItemButton navigationButton = this.navigationButtons[segment.TargetItem.Index];

            navigationButton.StartAngle = startAngle;
            navigationButton.UpdateVisualsState();
        }
        public override void ShowVisual(RadialSegment segmentModel, double startAngle)
        {
            if (segmentModel == null || !segmentModel.TargetItem.CanNavigate || segmentModel.LayoutSlot == RadialLayoutSlot.Invalid)
            {
                return;
            }

            NavigationItemButton navigationButton = this.navigationButtons[segmentModel.TargetItem.Index];

            navigationButton.StartAngle = startAngle;
            navigationButton.ResetVisualState();

            segmentModel.Visual         = navigationButton;
            navigationButton.Model      = segmentModel;
            navigationButton.Visibility = Visibility.Visible;
            segmentModel.Visual         = navigationButton;

            navigationButton.UpdateVisualsState();
        }