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

IsLabelCullingEnabled开启时如何始终显示SciChart WPF的首个刻度标签

SciChart WPF X轴固定显示首个刻度标签的实现方案

该需求可以直接通过扩展SciChart现有LabelProvider、TickProvider的能力实现,无需完全重写整套标签剔除逻辑,具体方案如下:

实现步骤

  • 首先在自定义的TickProvider中生成刻度集合时,强制将当前X轴可见范围的最小值作为第一个刻度加入集合,从源头避免首个刻度偶发未生成的问题,消除第一个标签被隐藏的底层诱因。
  • 之后在自定义的LabelProvider中重写标签更新逻辑,优先将首个刻度对应的标签标记为强制可见,优先级高于后续的重叠剔除规则:
    • 拿到所有生成的标签集合后,先取第一个标签,将其IsHidden属性设为false,部分版本需要额外设置ForceRender属性为true跳过重叠检测。
    • 剩余的标签从第二个开始,正常走原生的标签剔除逻辑,或你自定义的相邻标签像素重叠判断规则即可。

核心代码示例

// 自定义LabelProvider核心逻辑示例
public class FixedFirstLabelProvider : NumericLabelProvider
{
    public override void OnUpdateLabels(IAxisCore axis, List<LabelInfo> labels)
    {
        if (labels == null || labels.Count == 0) 
        {
            base.OnUpdateLabels(axis, labels);
            return;
        }
        
        // 单独处理首个标签,强制显示
        var firstLabel = labels[0];
        firstLabel.IsHidden = false;
        firstLabel.ForceRender = true;
        
        // 剩余标签走正常剔除逻辑
        var restLabels = labels.Skip(1).ToList();
        base.OnUpdateLabels(axis, restLabels);
        
        // 合并结果集
        labels.Clear();
        labels.Add(firstLabel);
        labels.AddRange(restLabels);
    }
}

适配注意事项

  • 若你的X轴可见范围会动态变化,可监听轴的VisibleRangeChanged事件,调用axis.Invalidate()主动触发标签刷新,保证当前可见范围的最小值始终对应第一个强制显示的标签。
  • 如果你已自定义了标签剔除的逻辑,需要将首个标签的强制显示逻辑放在所有剔除规则的最前面,避免后续的重叠判断逻辑覆盖首个标签的显示状态。

内容的提问来源于stack exchange,提问作者Brandon Dybala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:09:04