As I mentioned in my comment above:
According to the Source Code the name isn't determined by the entries in AvailableColors but the extension method ColorUtilities.GetColorName. Maybe it will work if you add your color to ColorUtilities.KnownColors too.
A (dirty) workaround until the developers fix this would be to ignore that the ColorUtilities class is private:
public static class ColorItemExtension
{
public static bool Register(this ColorItem colorItem)
{
if (colorItem.Color == null) return false;
Assembly assembly = typeof(ColorPicker).Assembly;
Type colorUtilityType = assembly.GetType("Xceed.Wpf.Toolkit.Core.Utilities.ColorUtilities");
if (colorUtilityType == null) return false;
FieldInfo fieldInfo = colorUtilityType.GetField("KnownColors");
if (fieldInfo == null) return false;
Dictionary<string, Color> knownColors = fieldInfo.GetValue(null) as Dictionary<string, Color>;
if (knownColors == null) return false;
if (knownColors.ContainsKey(colorItem.Name)) return false;
knownColors.Add(colorItem.Name, (Color) colorItem.Color);
return true;
}
}
Can be used like this:
var colorItem = new ColorItem(Color.FromRgb(1, 2, 3), "Almost black");
colorItem.Register();
colorPicker1.AvailableColors.Add(colorItem);
If this is important to you, you might want to consider bringing this issue to the developers attention here
AvailableColorsbut the extension methodColorUtilities.GetColorName. Maybe it will work if you add your color toColorUtilities.KnownColorstoo.