У меня та же проблема, и я нашел другое решение.Возможно, это не лучший вариант, но он работает.
Я добавил свойство int к привязке моего объекта в PieSeries, которые представляют индекс элемента в ObservableCollection.Затем я создал ResourceDictionaryCollection, который содержит все цвета по умолчанию для Палитры:
<datavis:ResourceDictionaryCollection x:Key="CouleursGraphique">
<!-- Blue -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFB9D6F7" />
<GradientStop Color="#FF284B70" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Red -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFFBB7B5" />
<GradientStop Color="#FF702828" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Light Green -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFB8C0AC" />
<GradientStop Color="#FF5F7143" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Yellow -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFFDE79C" />
<GradientStop Color="#FFF6BC0C" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Indigo -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFA9A3BD" />
<GradientStop Color="#FF382C6C" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Magenta -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFB1A1B1" />
<GradientStop Color="#FF50224F" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Dark Green -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FF9DC2B3" />
<GradientStop Color="#FF1D7554" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Gray Shade -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFB5B5B5" />
<GradientStop Color="#FF4C4C4C" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Blue -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FF98C1DC" />
<GradientStop Color="#FF0271AE" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Brown -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFC1C0AE" />
<GradientStop Color="#FF706E41" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Cyan -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFADBDC0" />
<GradientStop Color="#FF446A73" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Special Blue -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FF2F8CE2" />
<GradientStop Color="#FF0C3E69" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Gray Shade 2 -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFDCDCDC" />
<GradientStop Color="#FF757575" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Gray Shade 3 -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFF4F4F4" />
<GradientStop Color="#FFB7B7B7" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
<!-- Gray Shade 4 -->
<ResourceDictionary>
<RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9">
<GradientStop Color="#FFF4F4F4" />
<GradientStop Color="#FFA3A3A3" Offset="1" />
</RadialGradientBrush>
</ResourceDictionary>
</datavis:ResourceDictionaryCollection>
Я добавил конвертер, который возвращает цвет по указанному индексу ResourceDictionaryCollection.
/// <summary>
/// Convertit une valeur.
/// </summary>
/// <param name="value">Valeur produite par la source de liaison.</param>
/// <param name="targetType">Type de la propriété de cible de liaison.</param>
/// <param name="parameter">Paramètre de convertisseur à utiliser.</param>
/// <param name="culture">Culture à utiliser dans le convertisseur.</param>
/// <returns>
/// Une valeur convertie. Si la méthode retourne null, la valeur Null valide est utilisée.
/// </returns>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
ResourceDictionaryCollection listeCouleurs = parameter as ResourceDictionaryCollection;
int indice = (int)value;
return listeCouleurs[indice % listeCouleurs.Count]["Background"];
}
И яиспользовал все эти элементы в Xaml следующим образом:
<charting:Chart.Series>
<charting:PieSeries ItemsSource="{Binding Path=Donnees}"
DependentValuePath="Valeur"
IndependentValuePath="Libelle">
<charting:PieSeries.Palette>
<datavis:ResourceDictionaryCollection>
<ResourceDictionary>
<Style x:Key="DataPointStyle" TargetType="Control">
<Setter Property="Background" Value="{Binding Path=Index, Converter={StaticResource convCouleur}, ConverterParameter={StaticResource CouleursGraphique}}"/>
</Style>
</ResourceDictionary>
</datavis:ResourceDictionaryCollection>
</charting:PieSeries.Palette>
</charting:PieSeries>
Я надеюсь, что ответ поможет вам.