SciChart:自定义RolloverModifierLabel,用于从代码

时间:2017-04-10 18:04:14

标签: wpf scichart

在我更新到最新版本的SciChart之前,我有这个自定义翻转修饰符,它显示了任何给定点的多个值我翻过来#34;。 它是这样实现的:

<sci:RolloverModifier
     DrawVerticalLine="True"
     ShowTooltipOn="Always"
     SourceMode="AllVisibleSeries"
     TooltipLabelTemplate="{StaticResource RolloverLabelTemplate}" />

RolloverLabelTemplate是一个ControlTemplate:

 <ControlTemplate
     x:Key="RolloverLabelTemplate"
     TargetType="sci:TemplatableControl">
     <Grid>
     ...

现在,RolloverModifier.TooltipLabelTemplate从API中消失,似乎被TooltipTemplate取代,后者采用DataTemplate,而不是ControlTemplate。我尝试制作类似的DataTemplate:

<DataTemplate
 x:Key="SomeTemplate"
 DataType="s:XySeriesInfo">
<Grid>

但是当我尝试将它分配给RolloverModifier时,

 <s:RolloverModifier
    ...
    TooltipTemplate="{StaticResource SomeTemplate}" />

我得到以下异常:

  

无法投射类型的对象   &#39; SciChart.Charting.ChartModifiers.RolloverModifier&#39;输入   &#39; SciChart.Charting.Visuals.RenderableSeries.BaseRenderableSeries&#39;

我已尝试按照此文档:https://www.scichart.com/documentation/v4.x/webframe.html#RolloverModifier.html

关于样式工具提示模板的主题,它建议使用RolloverModifier,但要将TooltipTemplate添加到RenderableSeries:

<s:SciChartSurface.RenderableSeries>
      <s:FastLineRenderableSeries s:RolloverModifier.TooltipTemplate="{StaticResource XyTooltipTemplate}"/>                              
   </s:SciChartSurface.RenderableSeries>           

   <s:SciChartSurface.ChartModifier>
      <s:ModifierGroup>
         <s:RolloverModifier ShowTooltipOn="Always" />                   
      </s:ModifierGroup>
   </s:SciChartSurface.ChartModifier>
</s:SciChartSurface>

这对我来说是一个问题,因为我没有在xaml中定义RenderableSeries。它们绑定到视图模型:

 <sciVisuals:SciChartSurface
   ...
   SeriesSource="{Binding SciSeries}">

会有不止一个,事实上我甚至不知道有多少。在这种情况下,如何自定义翻转工具提示标签?

1 个答案:

答案 0 :(得分:1)

在SciChart WPF v4.x或更高版本中,有必要将TooltipTemplate应用于该系列,因为许多用户要求能够单独设置系列样式。例如,烛台系列应该具有与线系列不同的工具提示。

请参阅v4 +中的SciChart WPF Documentation for applying a RolloverModifier TooltipTemplate

  

样式化工具提示项目模板

     

默认情况下,SciChart具有许多工具提示模板,这些模板对于系列类型是唯一的   要更改工具提示模板,请使用RolloverModifier.TooltipTemplate附加属性:

<s:SciChartSurface >
   <s:SciChartSurface.Resources>
      <!-- Tooltip Template for an XyDataSeries binds to XySeriesInfo -->
      <!-- Check out the properties on XySeriesInfo to see what you can bind to -->
      <DataTemplate x:Key="XyTooltipTemplate" DataType="s:XySeriesInfo">
         <StackPanel Orientation="Vertical">              
            <TextBlock Foreground="White">
               <Run Text="Series: "/>
               <Run Text="{Binding SeriesName, StringFormat='{}{0}:'}"/>
            </TextBlock>              
            <TextBlock Foreground="White">
               <Run Text="X-Value: "/>
               <Run Text="{Binding FormattedXValue}"/>
            </TextBlock>
            <TextBlock Foreground="White">
               <Run Text="Y-Value: "/>
               <Run Text="{Binding FormattedYValue}"/>
            </TextBlock>
         </StackPanel>
      </DataTemplate>
   </s:SciChartSurface.Resources>
   <s:SciChartSurface.RenderableSeries>
      <s:FastLineRenderableSeries s:RolloverModifier.TooltipTemplate="{StaticResource XyTooltipTemplate}"/>                              
   </s:SciChartSurface.RenderableSeries>           
   <s:SciChartSurface.ChartModifier>
      <s:ModifierGroup>
         <s:RolloverModifier ShowTooltipOn="Always" />                   
      </s:ModifierGroup>
   </s:SciChartSurface.ChartModifier>
</s:SciChartSurface>

我建议尽管使用MVVM API来设置样式,但是在XAML中创建样式并使用SeriesBinding MVVM API应用它们。

how to style a tooltip when using the MVVM API here上的SciChart WPF文档中有一个FAQ。

  

许多客户问我们如何在MVVM API中为SciChart中使用的各种附加属性设置样式。例如,给定的以下附加属性,我们如何将其转换为MVVM API?

     

解决方案很简单,使用我们在Worked Example - Style a Series in MVVM中提供的样式化RenderableSeries的方法。

     

只需在视图中以样式声明附加属性和工具提示模板即可。

     

现在,使用BaseRenderableSeriesViewModel.StyleKey属性应用样式。 SciChart将采用这种风格并完成剩下的工作。

如果您仍在使用较旧的SeriesSource API(请注意,此版本现已在v4.x中过时),我建议您在XAML中声明您的样式并使用this technique to access a style in code-behind应用它。