【发布时间】:2017-04-24 23:47:32
【问题描述】:
我正在尝试自定义出现在 SciChart 折线图上的 RolloverModifier 工具提示的外观,使用 DataTemplate(结合 RolloverModifier 的 TooltipTemplate 属性,但无法弄清楚.
这是我的DataTemplate,为了让它正常工作,我尽可能地简化了它。
<DataTemplate x:Key="ChartToolTipTemplate" DataType="{x:Type s:SeriesInfo}">
<TextBlock Text="Hello" />
</DataTemplate>
到目前为止我所做的尝试:
第一:
<s:RolloverModifier x:Name="RolloverModifier" TooltipTemplate="{StaticResource ChartToolTipTemplate}">
但我得到了错误:
无法将“SciChart.Charting.ChartModifiers.RolloverModifier”类型的对象转换为“SciChart.Charting.Visuals.RenderableSeries.BaseRenderableSeries”类型。
从网上研究,看来我应该做的是:
<s:SciChartSurface.RenderableSeries>
<s:FastLineRenderableSeries s:TooltipModifier.TooltipTemplate="{StaticResource TooltipTemplate}"
s:TooltipModifier.IncludeSeries="True"
s:SeriesValueModifier.IncludeSeries="False"/>
</s:SciChartSurface.RenderableSeries>
但是,这对我没有好处,因为我的 RenderableSeries 绑定到我的 ViewModel 中的 ObservableCollection<IRenderableSeries>。
<s:SciChartSurface
x:Name="SciChart"
Grid.Column="0"
Annotations="{Binding Annotations}"
GridLinesPanelStyle="{StaticResource GridLinesPanelStyle}"
RenderableSeries="{Binding ChartSeries}"
Style="{StaticResource SurfaceStyle}">
关于类似问题的建议是使用ObservableCollection<IRenderableSeriesViewModel> 并根据文档中的此页面设置 ViewModel 中的样式:Bind Tooltip Templates or Attached Properties in MVVM,但我不知道如何转换我的IRenderableSeries到LineRenderableSeriesViewModel 并最终得到一个空白图表。
这个类似问题的另一个建议(SciChart: Custom RolloverModifierLabel for multiple DataSeries bound from code 是使用隐式样式,所以我添加了
<s:SciChartSurface.Resources>
<Style TargetType="s:BaseRenderableSeries">
<Setter Property="s:RolloverModifier.TooltipTemplate" Value="{StaticResource ChartToolTipTemplate}" />
<Setter Property="s:RolloverModifier.IncludeSeries" Value="True" />
<Setter Property="s:RolloverModifier.IsEnabled" Value="True" />
<Setter Property="FontSize" Value="30" />
</Style>
</s:SciChartSurface.Resources>
并保留了
<s:SciChartSurface.ChartModifier>
<s:ModifierGroup>
<s:LegendModifier
x:Name="LegendModifier"
Margin="10"
HorizontalAlignment="Right"
LegendTemplate="{StaticResource LegendTemplate}"
Orientation="Horizontal"
ShowLegend="{Binding ShowLegend}"
ShowVisibilityCheckboxes="False" />
<s:RolloverModifier x:Name="RolloverModifier" />
<s:SeriesSelectionModifier>
<s:SeriesSelectionModifier.SelectedSeriesStyle>
<Style TargetType="s:BaseRenderableSeries">
<Setter Property="Stroke" Value="DeepPink" />
<Setter Property="StrokeThickness" Value="3" />
</Style>
</s:SeriesSelectionModifier.SelectedSeriesStyle>
</s:SeriesSelectionModifier>
</s:ModifierGroup>
</s:SciChartSurface.ChartModifier>
但是样式对工具提示完全没有影响(即使是我刚刚放入以检查它是否有效的FontSize 位)。删除该行会完全删除工具提示。
【问题讨论】:
-
如果您需要任何帮助,请提供一个最小、完整且可验证的问题示例:stackoverflow.com/help/mcve
-
LineRenderableSeriesViewModel 是 IRenderableSeriesViewModel,因此您应该简单地绑定到 ObservableCollection
而不是 ObservableCollection 。 -
@mm8 是,如果 OP 正在使用 SeriesBinding 标记扩展。从代码示例来看,他不是。