在我更新到最新版本的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}">
会有不止一个,事实上我甚至不知道有多少。在这种情况下,如何自定义翻转工具提示标签?
答案 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应用它。