Silverlight图表系列中的数据点样式(ColumnSeries / BarSeries / LineSeries)

时间:2012-07-07 05:57:06

标签: silverlight charts silverlight-toolkit

我对Silverlight Charting控件的风格有一个非常奇怪的问题。为anyseries创建DataPointStyle时忽略现有的默认颜色组合。即使我没有在DataPointStyle的背景中设置任何内容,它也开始向我显示相同的(橙色)颜色。

我想要的是创建一些自定义工具提示并保留背景。但它不适合我。任何建议都非常感谢。

干杯!

维诺德

1 个答案:

答案 0 :(得分:2)

我认为诀窍不是将数据点样式应用于图表本身,而是应用于构成调色板的各种颜色。

我开始使用以下内容,它使用了PieChart。使用其他类型的图表时应遵循相同的原则:

<UserControl x:Class="ChartPaletteDemo.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    <UserControl.Resources>
        <Style x:Key="pointStyle" TargetType="toolkit:DataPoint">
            <Setter Property="DependentValueStringFormat"
                    Value="The value is {0:N0}" />
            <Setter Property="RatioStringFormat" Value="" />
        </Style>
    </UserControl.Resources>

    <toolkit:Chart>
        <toolkit:Chart.Series>
            <toolkit:PieSeries ItemsSource="{Binding Path=Data}"
                               IndependentValueBinding="{Binding Path=Key}"
                               DependentValueBinding="{Binding Path=Value}"
                               DataPointStyle="{StaticResource pointStyle}" />
        </toolkit:Chart.Series>
    </toolkit:Chart>
</UserControl>

这给了我一个饼图,其中包含自定义的工具提示文本,但所有段都是橙色。

下一步是设置自定义调色板。 Silverlight Toolkit图表使用的调色板是ResourceDictionaryCollection,每个调色板都包含ResourceDictionary,表示调色板中的颜色。您可以在程序集Themes\generic.xaml中的System.Windows.Controls.DataVisualization.Toolkit内找到图表的“默认”调板。您可以使用Blend或ILSpy等工具来获取此调色板。

我使用了这个'默认'调色板,然后:

  • 删除了DataShapeStyle的所有设置者(我不确定它们是否必要,但如果您愿意,可以保留它们),
  • 将每个TargetType的{​​{1}}从DataPointStyle更改为Control
  • 为每个toolkit:DataPoint添加了BasedOn="{StaticResource pointStyle}"

最后一点是为每个调色板条目设置自定义工具提示格式。

这给我留下了类似下面的内容,我已添加到DataPointStyle

<UserControl.Resources>

然后,我从 <toolkit:ResourceDictionaryCollection x:Key="chartPalette"> <!-- 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> <Style x:Key="DataPointStyle" TargetType="toolkit:DataPoint" BasedOn="{StaticResource pointStyle}"> <Setter Property="Background" Value="{StaticResource Background}" /> </Style> </ResourceDictionary> <!-- other styles copied similarly, but omitted for brevity --> </toolkit:ResourceDictionaryCollection> 移除了DataPointStyle="{StaticResource pointStyle}",并将PieSeries添加到了Palette="{StaticResource chartPalette}"元素中。当我运行应用程序时,我得到了饼图的四个部分以使用不同的颜色。

致谢:大部分内容都来自于http://forums.silverlight.net/post/330170.aspx的Silverlight论坛上的atomlinson帖子。