2

在我更新到最新版本的 SciChart 之前,我有这个自定义翻转修改器,它显示了我“翻转”的任何给定点的多个值。它是这样实现的:

<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 取代,TooltipTemplate 采用 DataTemplate,而不是 ControlTemplate。我尝试制作一个类似的 DataTemplate:

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

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

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

我得到以下异常:

无法将“SciChart.Charting.ChartModifiers.RolloverModifier”类型的对象转换为“SciChart.Charting.Visuals.RenderableSeries.BaseRenderableSeries”类型。

我尝试遵循此文档: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}">

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

4

1 回答 1

1

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

请参阅SciChart WPF 文档以在 v4+ 中应用 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应用它们。

SciChart WPF 文档中有一个关于如何在此处使用 MVVM API 时设置工具提示样式的常见问题解答。

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

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

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

现在,使用BaseRenderableSeriesViewModel.StyleKey属性应用样式。SciChart 将选择样式并完成剩下的工作。

如果您仍在使用较旧的 SeriesSource API(请注意,从 v4.x 开始,此 API 现在已过时),那么我建议您在 XAML 中声明您的样式,并使用此技术应用它来访问代码隐藏中的样式

于 2017-04-12T10:24:30.513 回答