我对Silverlight Charting控件的风格有一个非常奇怪的问题。为anyseries创建DataPointStyle时忽略现有的默认颜色组合。即使我没有在DataPointStyle的背景中设置任何内容,它也开始向我显示相同的(橙色)颜色。
我想要的是创建一些自定义工具提示并保留背景。但它不适合我。任何建议都非常感谢。
干杯!
维诺德
答案 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帖子。