0

私のPieSeriesの場合、関連するスライスの塗りつぶしの色を持つボタンのある凡例が必要です。また、FormattedRatioを使用してツールチップに表示されるパーセンテージをボタンに持たせる必要があります。これが私がこれまでに持っているものです:

ボタンとオレンジスライスのPieSeries画像

残念ながら、すべてのスライスがオレンジ色になりました。フォーラムによると、これは標準的な問題ですが、明確な理由はありません。また、LegendItemでは「FormattedRatio」を使用できません。(例B:10.17%と言いたいです。)

色を取り戻す方法と、legendItemのパーセンテージを使用する方法を知っている人はいますか?

編集:

この回答を使用してスライスの背景を変更することはできましたが、LegentItemsは新しい配色に従って変更されません。

ここに画像の説明を入力してください

色は正しいです-私は間違ったテストデータを使用しています。

4

1 に答える 1

1

色を変更する簡単な方法があります:Paletteプロパティを再定義します。私はすでに色についての同様の質問に答えました、ここにそれがあります:https ://stackoverflow.com/a/5626435/427225

凡例項目についてはFormattedRatio、ツールキットライブラリに多くのバグが含まれているため、プロパティにアクセスできませんが、バインドされた項目のプロパティを表示することができます。例を示します。

まず、LegendItemクラスのスタイルを作成する必要があります。これはデフォルトのものと同じですが、2つの変更があります。ContentTemplate私が名前を付けた独自のものと、プロパティtestItemTemplateのバインディングを前のものの代わりに変更したものです。Content{Binding DataContext}

<UserControl.Resources>
    <Style x:Key="testLegendItemStyle" TargetType="chart:LegendItem">
        <Setter Property="ContentTemplate" Value="{StaticResource testItemTemplate}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="chart:LegendItem">
                    <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <StackPanel Orientation="Horizontal">
                            <Rectangle Width="8" Height="8" Fill="{Binding Background}" Stroke="{Binding BorderBrush}" StrokeThickness="1" Margin="0,0,3,0"/>
                            <datavis:Title Content="{Binding DataContext}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</UserControl.Resources>

<chart:Chart>
    <chart:PieSeries ItemsSource="{Binding Items}" IndependentValuePath="Title" DependentValuePath="Value" LegendItemStyle="{StaticResource testLegendItemStyle}" />
</chart:Chart>

testItemTemplate次に、モデルに応じて前述のように書く必要があります。これが例です。

C#ビューモデル

var items = new[] {
    new ItemViewModel(){ Title = "Apples", Value = 35, CalculatedAndFormattedValue = "1%" },
    new ItemViewModel(){ Title = "Bananas", Value = 43, CalculatedAndFormattedValue = "4%"  },
    new ItemViewModel(){ Title = "Oranges", Value = 29, CalculatedAndFormattedValue = "3%"  },
    new ItemViewModel(){ Title = "Cherries", Value = 51, CalculatedAndFormattedValue = "2%"  },
    new ItemViewModel(){ Title = "Lemons", Value = 31, CalculatedAndFormattedValue = "5%"  },
};

Xaml DataTemplate

<DataTemplate x:Key="testItemTemplate">
    <TextBlock>
        <Run Text="{Binding Title}" />
        <Run Text=" - " />
        <Run Text="{Binding CalculatedAndFormattedValue}" />
    </TextBlock>
</DataTemplate>

カスタム凡例アイテムを含む円グラフ

言うまでもなく、パーセントは自分で計算する必要があります

于 2012-09-28T20:47:59.353 に答える