私は上記の私のコメントで述べたように:名前はAvailableColors
のエントリが、拡張メソッドColorUtilities.GetColorName
によって決定されていないSource Codeによると
。多分ColorUtilities.KnownColors
にあなたの色を追加するとうまくいくかもしれません。
A(汚い)回避策の開発者は、これがになり修正するまではColorUtilities
クラスがプライベートであることをを無視:
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;
}
}
は、次のように使用することができます:
var colorItem = new ColorItem(Color.FromRgb(1, 2, 3), "Almost black");
colorItem.Register();
colorPicker1.AvailableColors.Add(colorItem);
これが重要な場合は、この問題を開発者に伝えることを検討してください注意here
[ソースコード](http://wpftoolkit.codeplex.com/SourceControl/latest#Main/Source/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Core/Utilities/ColorUtilities.cs)によると、 nameは 'AvailableColors'の項目ではなく、拡張メソッド' ColorUtilities.GetColorName'によって決定されます。おそらく、ColorUtilities.KnownColorsに色を追加するとうまくいくかもしれません。 –
@ManfredRadlwimmerあなたはこれを答えとして追加してください、私は同じことを受け入れるでしょう、これは動作します!、ソースコードをダウンロードしました!乾杯、 – Sandepku