我對Silverlight圖表控件的樣式有一個非常奇怪的問題。當我爲任何系列創建DataPointStyle時,它會忽略現有的默認顏色組合。即使我沒有在DataPointStyle的背景中設置任何東西,它也開始向我展示相同(橙色)的顏色。Silverlight圖表系列中的數據點樣式(ColumnSeries/BarSeries/LineSeries)
我想要的是創建一些自定義工具提示並保持原樣。但它不適合我。任何建議,非常感謝。
乾杯!
維諾德
我對Silverlight圖表控件的樣式有一個非常奇怪的問題。當我爲任何系列創建DataPointStyle時,它會忽略現有的默認顏色組合。即使我沒有在DataPointStyle的背景中設置任何東西,它也開始向我展示相同(橙色)的顏色。Silverlight圖表系列中的數據點樣式(ColumnSeries/BarSeries/LineSeries)
我想要的是創建一些自定義工具提示並保持原樣。但它不適合我。任何建議,非常感謝。
乾杯!
維諾德
我認爲,關鍵是不將數據點樣式應用到圖表本身,而是各個顏色組成的調色板。
我從以下開始,它使用了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工具包圖表使用的調色板是ResourceDictionaryCollection
,每個包含ResourceDictionary
表示調色板中的顏色。您可以在程序集System.Windows.Controls.DataVisualization.Toolkit
中找到Themes\generic.xaml
內圖表的「默認」調色板。您可以使用Blend或ILSpy等工具來獲取此調色板。
我把這個「默認」的調色板和:
DataShapeStyle
(我不知道他們是必要的,但你可以讓他們,如果你願意的話),DataPointStyle
的TargetType
從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>
我再從PieSeries
取出DataPointStyle="{StaticResource pointStyle}"
並添加Palette="{StaticResource chartPalette}"
到<toolkit:Chart>
元素來代替。當我運行應用程序時,我得到了餅圖的四個片段以使用不同的顏色。
致謝:其中大部分內容來自atomlinson在Silverlight論壇上發佈的http://forums.silverlight.net/post/330170.aspx。
感謝兄弟,但它是相當奇怪,如果我有4種類型的圖表,我將不得不爲每個圖表寫4種風格。任何方式沒有一個屬性的解決方案,你是相當令人印象深刻的對我來說,乾杯!Vindo – vinod8812 2012-07-11 10:28:17
請執行http://forums.silverlight.net/t/142804.aspx/1上發佈的任何建議嗎? – 2012-07-07 10:16:07
我經歷了鏈接,但沒有幫助我:( – vinod8812 2012-07-08 03:51:28