我对 Silverlight Charting 控件的样式有一个非常奇怪的问题。当我为 anyseries 创建 DataPointStyle 时,它会忽略现有的默认颜色组合。即使我没有在 DataPointStyle 的背景中设置任何内容,它也会开始向我显示相同的(橙色)颜色。
我想要的是创建一些自定义工具提示并保持背景不变。但它不适合我。任何建议都非常感谢。
干杯!
维诺德
我对 Silverlight Charting 控件的样式有一个非常奇怪的问题。当我为 anyseries 创建 DataPointStyle 时,它会忽略现有的默认颜色组合。即使我没有在 DataPointStyle 的背景中设置任何内容,它也会开始向我显示相同的(橙色)颜色。
我想要的是创建一些自定义工具提示并保持背景不变。但它不适合我。任何建议都非常感谢。
干杯!
维诺德
我认为诀窍不是将数据点样式应用于图表本身,而是应用于构成调色板的各个颜色。
我从以下开始,它使用饼图。使用其他类型的图表时应适用相同的原则:
<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
每个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}"
到<toolkit:Chart>
元素中。当我运行应用程序时,我让饼图的四个部分使用不同的颜色。
致谢:大部分内容来自 atomlinson 在 Silverlight 论坛上的帖子 http://forums.silverlight.net/post/330170.aspx。