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(); }