Silverlight 3 Toolkit图表:如何在栏上显示值?

时间:2010-02-12 19:47:38

标签: silverlight silverlight-toolkit

Silverlight 3工具包图表非常棒。我正在使用BarSeries,而silverlight正在显示与值绑定成比例的条形长度。但有没有办法在酒吧或酒吧旁边获得实际价值?这是我的XAML

<chartingToolkit:Chart
                        Grid.Column="1"
                        x:Name="chartEnvironmentStatusGlobal"
                        Title="Environment Status">
                        <chartingToolkit:BarSeries
                            x:Name="chartEnvironmentStatus"
                            Title="Pass"
                            HorizontalAlignment="Stretch"
                            VerticalAlignment="Stretch"
                            Background="Green"
                            IndependentValueBinding="{Binding Path=Instance}"
                            DependentValueBinding="{Binding Path=Count}"
                            AnimationSequence="LastToFirst">
                            </chartingToolkit:BarSeries>
                        <chartingToolkit:BarSeries
                            x:Name="chartEnvironmentStatus1"
                            Title="Fail"
                            HorizontalAlignment="Stretch"
                            VerticalAlignment="Stretch"
                            Background="Red"
                            IndependentValueBinding="{Binding Path=Instance}"
                            DependentValueBinding="{Binding Path=Count}"
                            AnimationSequence="LastToFirst">
                            </chartingToolkit:BarSeries>
                    </chartingToolkit:Chart>

提前谢谢。

1 个答案:

答案 0 :(得分:2)

您需要为BarDataPoint创建一个新模板。我不会在这里发布整个模板,因为a)它非常大而且b)我不确定我站在版权上的位置。

如果您已经混合了,您可以非常轻松地获取现有模板,您应该可以使用该工具创建副本。或者,您可以从以下源代码中获取它: -

#someSourceCodeRootFolder\Controls.DataVisualization.Toolkit\Charting\DataPoint\BarDataPoint.xaml

在资源字典中创建: -

<Style x:Key="BarDataPointWithContent" TargetType="charting:BarDataPoint">
  <Setter Property="Template">
    <Setter.Value>
      <Border ... copy from original template... >
         <!-- Wads of original VisualStateManager stuff here -->
         <Grid Background="{TemplateBinding Background}">
           <!-- Original set of Rectangles and Border here -->
           <TextBlock Text="{TemplateBinding FormattedDependentValue}"
             HorizontalAlignment="Center" />
         </Grid>
         <ToolTipService.ToolTip>
             <!-- Do something different here perhaps -->
         </ToolTipService.ToolTip>
      </Border>
    </Setter.Value>
  </Setter>
</Style>

基本上我所做的是添加最终TextBlock并将其绑定到ToolTip在其ContentControl中使用的相同FormattedDependentValue属性。您可以在TextBlock中添加更多样式以获得所需的外观,您可能还希望使用工具提示内容执行不同的操作。

所以关于这种风格,你可以在图表中做到这一点: -

<chartingToolkit:BarSeries.DataPointStyle>
  <Style TargetType="BarDataPoint" BasedOn="{StaticResouce BarDataPointWithContent}" >
    <Setter Property="Background" Value="Red" />
  </Style>
</chartingToolkit:BarSeries.DataPointStyle>

注意潜伏的MSofties

是否可以将模板添加到文档中,以便我们不需要源代码,Blend或Reflector来提取它们?