2012-02-08 11 views
3

私はSilverlight 4ツールキットとChartingコントロール、特にラインシリーズを使用しています。また、Microsoft Silverlightテーマの1つを使用しています。このテーマには、Chartの既定のスタイル設定が付属しています。Silverlight Toolkitチャートラインシリーズのカラー選択

私は、ToolkitStyles.xamlにChartBrush1、ChartBrush2などのチャートツールキットで使用されているカラーブラシのホストがたくさんあることを知っています。私が理解していないのは、チャート自体。

私がLinePointのDataPointStyleを変更しようとしている理由は、私がBlendでデータポイントスタイルのコピーを取り出して、必要な変更を加えたデータ点のより小さい。しかし、私がこれを行うとすぐに、グラフのすべてのラインシリーズは同じ色(オレンジ色)を持ち、ChartBrushリソースは無視されます(上で詳述)。

ラインシリーズの色選択を推進しているのは何ですか?それはどうやって起こるの?なぜ私はテンプレートのコピーを取るとそれを失うのですか?

ありがとうございます!

答えて

3

ツールキットChartコントロールには、スタイルのリソース辞書であるPaletteというプロパティがあります。

デフォルトのグラフスタイルは、「Controls.DataVisualization.Toolkit \ Charting \ Chart \ Chart.xaml」にあります。

そこには、PaletteResourceDictionaryCollectionであり、コレクションの各ResourceDictionaryDataPointStyleであることがわかります。各DataPointStyleBackgroundプロパティを別に設定します。これは、グラフの各行が異なる色になる方法です。

xamlに明示的にDataPointStyleが設定されているラインシリーズのラインが常に同じ色になるのは明らかです。デフォルトの色はDataPointStyleで置き換えられています。

これに対する解決策は、チャートで使用されるパレットを変更することです。ここでは、希望のDataPointStyleプロパティを設定し、次に辞書コレクション内のすべてのDataPointStyleに対して基本スタイルを作成しました。BasedOn="{StaticResource DataPointStyleWithNoPoints}"を指定します。

<toolkit:Chart Palette="{StaticResource ChartPaletteWithNoDataPoints}"> 
    ... 
</toolkit:Chart> 

<Style x:Key="DataPointStyleWithNoPoints" TargetType="Control"> 
    <Setter Property="Width" Value="1" /> 
    <Setter Property="Height" Value="1" /> 
</Style> 

<datavis:ResourceDictionaryCollection x:Key="ChartPaletteWithNoDataPoints"> 
    <!-- 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="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Red --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFFBB7B5" /> 
      <GradientStop Color="#FF702828" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Width" Value="1" /> 
      <Setter Property="Height" Value="1" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Light Green --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFB8C0AC" /> 
      <GradientStop Color="#FF5F7143" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Yellow --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFFDE79C" /> 
      <GradientStop Color="#FFF6BC0C" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Indigo --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFA9A3BD" /> 
      <GradientStop Color="#FF382C6C" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Magenta --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFB1A1B1" /> 
      <GradientStop Color="#FF50224F" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Dark Green --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FF9DC2B3" /> 
      <GradientStop Color="#FF1D7554" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Gray Shade --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFB5B5B5" /> 
      <GradientStop Color="#FF4C4C4C" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Blue --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FF98C1DC" /> 
      <GradientStop Color="#FF0271AE" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Brown --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFC1C0AE" /> 
      <GradientStop Color="#FF706E41" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Cyan --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFADBDC0" /> 
      <GradientStop Color="#FF446A73" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Special Blue --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FF2F8CE2" /> 
      <GradientStop Color="#FF0C3E69" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Gray Shade 2 --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFDCDCDC" /> 
      <GradientStop Color="#FF757575" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Gray Shade 3 --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFF4F4F4" /> 
      <GradientStop Color="#FFB7B7B7" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
    <!-- Gray Shade 4 --> 
    <ResourceDictionary> 
     <RadialGradientBrush x:Key="Background" GradientOrigin="-0.1,-0.1" Center="0.075,0.015" RadiusX="1.05" RadiusY="0.9"> 
      <GradientStop Color="#FFF4F4F4" /> 
      <GradientStop Color="#FFA3A3A3" Offset="1" /> 
     </RadialGradientBrush> 
     <Style x:Key="DataPointStyle" TargetType="Control" BasedOn="{StaticResource DataPointStyleWithNoPoints}"> 
      <Setter Property="Background" Value="{StaticResource Background}" /> 
     </Style> 
     <Style x:Key="DataShapeStyle" TargetType="Shape"> 
      <Setter Property="Stroke" Value="{StaticResource Background}" /> 
      <Setter Property="StrokeThickness" Value="2" /> 
      <Setter Property="StrokeMiterLimit" Value="1" /> 
      <Setter Property="Fill" Value="{StaticResource Background}" /> 
     </Style> 
    </ResourceDictionary> 
</datavis:ResourceDictionaryCollection> 

ザ・あなたは、単にチャートのパレットを指定します

関連する問題