ОК, вот как я это решил.Во-первых, вот мой простой класс:
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
public Brush FavoriteColor { get; set; }
}
Затем стиль, который окрашивает столбцы, взят из блога Дэвида Ансона здесь: http://blogs.msdn.com/b/delay/archive/2009/02/04/columns-of-a-different-color-customizing-the-appearance-of-silverlight-charts-with-re-templating-and-mvvm.aspx
Используя в качестве примера код легенды Дэвида Пирог серииВ конце концов я создал этот стиль для самой легенды:
<Style x:Key="ColorByPreferenceLegend" TargetType="toolkit:Legend">
<Setter Property="Margin" Value="15,25" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="BorderBrush" Value="#FFDBDBDB" />
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.442,0.005" StartPoint="0.558,0.995">
<GradientStop Color="#FFDBDBDB" />
<GradientStop Color="#FFFFFFFF" Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle
Width="8" Height="8"
Fill="{Binding FavoriteColor}"
Stroke="{Binding FavoriteColor}"
StrokeThickness="1" Margin="3"/>
<TextBlock Margin="3" Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
И вот разметка диаграммы:
<toolkit:Chart x:Name="chart" LegendStyle="{StaticResource ColorByPreferenceLegend}">
<toolkit:ColumnSeries IndependentValueBinding="{Binding Name}"
DependentValueBinding="{Binding Age}"
DataPointStyle="{StaticResource ColorByPreferenceColumn}" />
</toolkit:Chart>
Наконец, вот как переопределить элементы легенды, где _students являетсяСписок объектов Студент:
ColumnSeries cs = chart.Series[0] as ColumnSeries;
cs.ItemsSource = _students;
cs.LegendItems.Clear();
foreach (Student s in _students)
cs.LegendItems.Add(s);