/// <summary> /// Set the visual state for the stars /// </summary> /// <param name="check">User selected star</param> /// <param name="rat">reference to the instance of this control</param> private static void SetStars(CheckBox check, RateControl rat) { if (rat != null) { checkingInProgress = true; bool found = false; // we want to empty the selection, so cheat the check routine if (check == null) { found = true; } // Loop through the stars and light them on if they are // below selected and dim if they are above the selected for (int i = 0; i < rat.stars.Count; i++) { if (check != rat.stars[i]) { if (!found) { rat.stars[i].IsChecked = true; } else { rat.stars[i].IsChecked = false; } } else { found = true; rat.stars[i].IsChecked = true; rat.Rating = i + 1; } } checkingInProgress = false; } }
private static void CreateStars(RateControl rat, int? amount) { if (amount == null) { amount = 1; } // Do the cleanup for the old stuff foreach (CheckBox box in rat.stars) { rat.LayoutRoot.Children.Remove(box); } rat.stars.Clear(); List<ColumnDefinition> columnDefinitionsToRemove = new List<ColumnDefinition>(); foreach (ColumnDefinition def in rat.LayoutRoot.ColumnDefinitions) { columnDefinitionsToRemove.Add(def); } foreach (ColumnDefinition def in columnDefinitionsToRemove) { rat.LayoutRoot.ColumnDefinitions.Remove(def); } rat.Rating = 0; // Create the new controls for (int i = 0; i < amount; ++i) { rat.LayoutRoot.ColumnDefinitions.Add(new ColumnDefinition()); CheckBox check = new CheckBox(); check.Name = "check" + i.ToString(); check.SetValue(Grid.ColumnProperty, i); check.HorizontalAlignment = HorizontalAlignment.Left; check.Checked += new RoutedEventHandler(OnCheck); check.Unchecked += new RoutedEventHandler(OnCheck); rat.stars.Add(check); rat.LayoutRoot.Children.Add(check); } }