在我更新到最新版本的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
x:Key="SomeTemplate"
DataType="s:XySeriesInfo">
<Grid>
但是当我尝试将其分配给滚动修改器时,
<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 中定义可渲染系列。它们绑定到视图模型:
<sciVisuals:SciChartSurface
...
SeriesSource="{Binding SciSeries}">
会不止一个,事实上我什至不知道有多少。在这种情况下,如何自定义鼠标经过工具提示标签?
在 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?
解决方案很简单,使用我们在工作示例中介绍的样式化可渲染系列的方法 - 在 MVVM 中设置系列的样式。
只需在视图中以样式声明附加的属性和工具提示模板即可。
现在,使用 BaseRenderableSeriesViewModel.StyleKey 属性应用样式。SciChart将选择样式并完成其余的工作。
如果您仍在使用较旧的 SeriesSource API(请注意,从 v4.x 开始现已过时),那么我建议在 XAML 中声明您的样式,并使用此技术应用它来访问代码隐藏中的样式。