2012-07-07 50 views
1

我對Silverlight圖表控件的樣式有一個非常奇怪的問題。當我爲任何系列創建DataPointStyle時,它會忽略現有的默認顏色組合。即使我沒有在DataPointStyle的背景中設置任何東西,它也開始向我展示相同(橙色)的顏色。Silverlight圖表系列中的數據點樣式(ColumnSeries/BarSeries/LineSeries)

我想要的是創建一些自定義工具提示並保持原樣。但它不適合我。任何建議,非常感謝。

乾杯!

維諾德

+0

請執行http://forums.silverlight.net/t/142804.aspx/1上發佈的任何建議嗎? – 2012-07-07 10:16:07

+0

我經歷了鏈接,但沒有幫助我:( – vinod8812 2012-07-08 03:51:28

回答

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工具包圖表使用的調色板是ResourceDictionaryCollection,每個包含ResourceDictionary表示調色板中的顏色。您可以在程序集System.Windows.Controls.DataVisualization.Toolkit中找到Themes\generic.xaml內圖表的「默認」調色板。您可以使用Blend或ILSpy等工具來獲取此調色板。

我把這個「默認」的調色板和:

  • 取出所有的制定者爲DataShapeStyle(我不知道他們是必要的,但你可以讓他們,如果你願意的話),
  • 改變每個DataPointStyleTargetTypeControltoolkit: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

+0

感謝兄弟,但它是相當奇怪,如果我有4種類型的圖表,我將不得不爲每個圖表寫4種風格。任何方式沒有一個屬性的解決方案,你是相當令人印象深刻的對我來說,乾杯!Vindo – vinod8812 2012-07-11 10:28:17