0

对于我的 PieSeries,我希望带有按钮的图例具有相关切片的填充颜色,我还希望按钮具有使用 FormattedRatio 的工具提示中显示的百分比。这是我到目前为止所拥有的:

带有按钮和橙色切片的 PieSeries 图像

不幸的是,可以看出所有切片现在都变成橙色了,论坛说这是一个标准问题,但没有提供明显的原因,“FormattedRatio”也不适用于 LegendItem。(我想说示例 B:10.17%。)

有谁知道我如何取回颜色以及如何使用 legendItem 中的百分比?

编辑:

已经能够使用此答案更改切片的背景,但 LegentItems 不会根据新的配色方案进行更改。

在此处输入图像描述

颜色是正确的 - 我使用的是错误的测试数据。

4

1 回答 1

1

有一个简单的方法来改变颜色:重新定义Palette属性。我已经回答了一个关于颜色的类似问题,这里是:https ://stackoverflow.com/a/5626435/427225

对于图例项,是无法访问FormattedRatio属性的,因为工具包库中有很多bug,但是可以显示绑定项的属性,我举个例子。

首先,您需要为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 x:Key="testItemTemplate">
    <TextBlock>
        <Run Text="{Binding Title}" />
        <Run Text=" - " />
        <Run Text="{Binding CalculatedAndFormattedValue}" />
    </TextBlock>
</DataTemplate>

带有自定义图例项的饼图

不用说,你应该自己计算百分比

于 2012-09-28T20:47:59.353 回答