WinForms C#中LiveCharts仅显示单个系列X&Y值的Tooltip问题
解决LiveCharts WinForms中Tooltip仅显示指定系列X&Y值的问题
方法1:自定义Tooltip模板(推荐)
LiveCharts v0允许完全自定义Tooltip显示内容,直接控制要展示的信息:
- 要么在WinForms设计器里,找到Chart控件的
Tooltip属性,选择DefaultTooltip后设置Template; - 要么直接在代码里定义模板,只保留X值和目标系列的Y值:
var customTooltip = new DefaultTooltip { Template = @" <DataTemplate> <StackPanel> <TextBlock Text='{Binding X}' FontSize='14' FontWeight='Bold'/> <TextBlock Text='Measured Temperature: {Binding Points[0].Y}'/> </StackPanel> </DataTemplate>" }; chart1.Tooltip = customTooltip;
要是“Measured Temperature”不是第一个系列,就先找到目标系列的索引,再对应调整模板里的绑定路径即可。
方法2:重写Tooltip的更新逻辑
如果模板满足不了需求,直接继承DefaultTooltip重写Update方法,过滤掉无关数据:
public class CustomTempTooltip : DefaultTooltip { protected override void Update(TooltipData data) { // 只保留X值和目标系列的点数据 var filteredData = new TooltipData { X = data.X, Points = data.Points.Where(p => p.Series.Title == "Measured Temperature").ToList() }; base.Update(filteredData); } }
然后在窗体初始化时替换默认Tooltip:
chart1.Tooltip = new CustomTempTooltip();
方法3:结合SelectionMode手动控制Tooltip内容
如果想用SelectionMode.OnlySender,可以监听DataHover事件手动设置Tooltip内容,保留X值:
chart1.DataHover += (sender, e) => { if (e.Point?.Series.Title == "Measured Temperature") { var tooltip = chart1.Tooltip as DefaultTooltip; tooltip.Content = $"时间: {e.Point.X}\n实测温度: {e.Point.Y}"; } }; chart1.SelectionMode = SelectionMode.OnlySender;
内容的提问来源于stack exchange,提问作者Yorick
相关产品推荐
相关产品推荐

