SilverlightChartingコントロールのスタイルに非常に奇妙な問題があります。anyseriesのDataPointStyleを作成すると、既存のデフォルトの色の組み合わせが無視されます。DataPointStyleの背景に何も設定していなくても、すべてに同じ(オレンジ)色が表示され始めます。
私が欲しいのは、カスタムツールチップを作成し、背景をそのままにしておくことです。しかし、それは私にとってはうまくいきません。どんな提案でも大歓迎です。
乾杯!
ヴィノド
SilverlightChartingコントロールのスタイルに非常に奇妙な問題があります。anyseriesのDataPointStyleを作成すると、既存のデフォルトの色の組み合わせが無視されます。DataPointStyleの背景に何も設定していなくても、すべてに同じ(オレンジ)色が表示され始めます。
私が欲しいのは、カスタムツールチップを作成し、背景をそのままにしておくことです。しかし、それは私にとってはうまくいきません。どんな提案でも大歓迎です。
乾杯!
ヴィノド
データポイント スタイルをグラフ自体に適用するのではなく、パレットを構成する個々の色に適用するのがコツだと思います。
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
それぞれの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>
アプリケーションを実行すると、パイの 4 つのセグメントが異なる色を使用するようになりました。
謝辞: これのほとんどはhttp://forums.silverlight.net/post/330170.aspxの Silverlight フォーラムでの atomlinson の投稿から取られたもの です。