private static ColorViewModel AddColor(Color color, string name) { if (!name.StartsWith("#", StringComparison.Ordinal)) { name = NiceName(name); } var cvm = new ColorViewModel(color, name); m_colors.Add(cvm); return(cvm); }
private ColorViewModel ListContains(Color color) { foreach (object o in ColorList1.Items) { ColorViewModel vcm = o as ColorViewModel; if (vcm == null) { continue; } if (vcm.Color == color) { return(vcm); } } return(null); }
private static void OnSelectedColorChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) { ComboBoxColor cp = obj as ComboBoxColor; Debug.Assert(cp != null); Color newColor = (Color)args.NewValue; Color oldColor = (Color)args.OldValue; //OnColorChanged(oldColor, newColor); if (newColor == oldColor) { return; } // When the SelectedColor changes, set the selected value of the combo box ColorViewModel selectedColorViewModel = cp.ColorList1.SelectedValue as ColorViewModel; if (selectedColorViewModel != null && selectedColorViewModel.Color.Equals(newColor)) { //cp.ColorList1.AutomationPropertiesName = selectedColorViewModel.Name; } if (selectedColorViewModel == null || !selectedColorViewModel.Color.Equals(newColor)) { // Add the color if not found ColorViewModel cvm = cp.ListContains(newColor); if (cvm == null) { cvm = AddColor(newColor, newColor.ToString()); //cp.ColorList1.Items.Add(cvm); cp.ColorList1.Items.Refresh(); cp.ColorList1.SelectedIndex = cp.ColorList1.Items.Count - 1; } //cp.ColorList1.AutomationPropertiesName = cvm.Name; } // Also update the brush // cp.SelectedBrush = ColorBrushCache.Get(newColor); cp.SelectedColor = newColor; }