1

SilverlightChartingコントロールのスタイルに非常に奇妙な問題があります。anyseriesのDataPointStyleを作成すると、既存のデフォルトの色の組み合わせが無視されます。DataPointStyleの背景に何も設定していなくても、すべてに同じ(オレンジ)色が表示され始めます。

私が欲しいのは、カスタムツールチップを作成し、背景をそのままにしておくことです。しかし、それは私にとってはうまくいきません。どんな提案でも大歓迎です。

乾杯!

ヴィノド

4

1 に答える 1

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 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 の投稿から取られたもの です。

于 2012-07-08T10:14:31.127 に答える