You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:36:05