wfp图表工具包:显示所有列上方的数据点值

时间:2013-06-07 07:29:22

标签: wpf charts

这里的紧急情况。刚刚第一次看到WPF并需要这么快,请原谅我:如果我第一次没有提供足够的信息,我保证会编辑这个问题。

在图表对象中,使用命名空间:

定义
xmlns:charting="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"

我正在绘制一个简单的条形图。

<charting:Chart Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" 
                       Visibility="{Binding Path=MyCurrentResultsView, Converter={StaticResource ResourceKey=NullObjectToVisibilityConverter}}"
                       Background="Transparent" Foreground="White"
                       Margin="50,0,50,0" Height="350"
                       HorizontalAlignment="Stretch" Title="{Binding Path=MyCurrentResultsView.Name}">
    <charting:ColumnSeries Height="350" Foreground="Black"
                        ItemsSource="{Binding Path=MyCurrentResultsView.ResultsView}"
                        IndependentValueBinding="{Binding Key}"
                        DependentValueBinding="{Binding Value}">
    </charting:ColumnSeries>
</charting:Chart>

我想要做的是显示列上方每列的值(如果可能,甚至在列矩形内部:这些是百分比值,其目的是使它们在条形图上更加明显)。

我一直在关注样式信息,但这不仅仅是风格。我看到两种可能性。之一:

  1. 对于系列中的每个列项,定义一个将帧定位在每列上方的转换,创建一个文本框,其标签设置为相关值,然后在框内绘制文本框。
  2. 在“ColumnSeries”或“?ColumnItem?”上找到某种属性“启用”显示列上方的绑定值。
  3. 这里黑暗中的总投篮。感谢。

1 个答案:

答案 0 :(得分:5)

我会尝试像这样更改ColumnDatapointTemplate

<charting:ColumnSeries Height="350" Foreground="Black"
                        ItemsSource="{Binding Path=MyCurrentResultsView.ResultsView}"
                        IndependentValueBinding="{Binding Key}"
                        DependentValueBinding="{Binding Value}">
    <charting:ColumnSeries.DataPointStyle>
        <Style TargetType="charting:ColumnDataPoint">
            <Setter Property="Template">
                <Setter.Value>
                 <ControlTemplate TargetType="charting:ColumnDataPoint">
                 <Grid>
                    <Rectangle Fill="{TemplateBinding Background}" Stroke="Black"/>
                    <Grid Margin="0 -20 0 0" HorizontalAlignment="Center" VerticalAlignment="Top">
                        <TextBlock Text="{TemplateBinding FormattedDependentValue}" Margin="2"/>
                    </Grid>
                 </Grid>
                 </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </charting:ColumnSeries.DataPointStyle> 
</charting:ColumnSeries>

使用垂直对齐和/或边距播放一下,您就可以将信息输入列和其他列。

希望这有帮助!