static void OnDPAffectingPositionChanged(DependencyObject sender,
                                                 DependencyPropertyChangedEventArgs args)
        {
            RadialValueSelector control = (RadialValueSelector)sender;

            control.PositionBasedOnValue();
        }
        static void OnEnumTypeNameChanged(DependencyObject sender,
                                          DependencyPropertyChangedEventArgs args)
        {
            RadialValueSelector control = (RadialValueSelector)sender;

            control.enumType    = null;
            control.enumDetails = null;

            string newValue = args.NewValue as string;

            if (!string.IsNullOrEmpty(newValue))
            {
                control.enumType    = Type.GetType(newValue);
                control.enumDetails = new List <Tuple <string, double> >();
                var values = Enum.GetValues(control.enumType);
                var names  = Enum.GetNames(control.enumType);

                int i = 0;
                foreach (var item in values)
                {
                    control.enumDetails.Add(Tuple.Create(names[i], (double)(int)item));
                    i++;
                }
                control.Minimum   = control.enumDetails.Min(cd => cd.Item2);
                control.Maximum   = control.enumDetails.Max(cd => cd.Item2);
                control.Value     = 0.0d;
                control.Increment = 1.0d; // assumption.
                control.SetEnumValueToClosestMatch();
            }
        }
        static void OnValueChanged(DependencyObject sender,
                                   DependencyPropertyChangedEventArgs args)
        {
            RadialValueSelector control = (RadialValueSelector)sender;

            control.PositionBasedOnValue();

            control.SetEnumValueToClosestMatch();
        }