繁体   English   中英

WPF DynamicDataDisplay - 将字符串放在 Y 轴而不是数字

[英]WPF DynamicDataDisplay - Putting strings in Y Axis instead of numbers

使用 WPF(不是 Silverlight)D3,是否可以在 Y 轴上放置字符串? 我专门谈论一种情况,其中我有一个带有状态值的时间线图(假设“高”和“中”和“低”映射为 1、0 和 -1)并希望状态在 y 轴上刻度而不是数字...

谢谢!

您可以使用 LabelProvider 来达到您想要的效果。 您必须创建一个新的 LabelProvider 类,该类源于 LabelProviderBase,或者更具体地说,在您的情况下,NumericLabelProviderBase。 您应该能够获取您拥有的所有刻度 (1,0-1) 并使用 if 或新 LabelProviderClass 中的开关将它们更改为字符串。 标签提供程序的来源中有大量示例,您可以将其用作基础。

您要覆盖的方法是 CreateLabels。 这是我提出的一个快速方法,它应该(希望如此!)让你到达你需要的地方。 在您创建的新类中实现。

public override UIElement[] CreateLabels(ITicksInfo<double> ticksInfo) {            

        var ticks = ticksInfo.Ticks;
        Init(ticks);            

        UIElement[] res = new UIElement[ticks.Length];
        LabelTickInfo<double> tickInfo = new LabelTickInfo<double> { Info = ticksInfo.Info };
        for (int i = 0; i < res.Length; i++) {
            tickInfo.Tick = ticks[i];
            tickInfo.Index = i;
            string labelText = "";

            if(Convert.ToInt32(tickInfo.Tick) == 1) {
                labelText = "High";
            } else if(Convert.ToInt32(tickInfo.Tick) == 0) {
                labelText = "Medium"
            } else if(Convert.ToInt32(tickInfo.Tick) == -1) {
                labelText = "Low"
            } else {
                labelText = ""
            }

            TextBlock label = (TextBlock)GetResourceFromPool();
            if (label == null) {
                label = new TextBlock();
            }

            label.Text = labelText;
            label.ToolTip = ticks[i].ToString();

            res[i] = label;

            ApplyCustomView(tickInfo, label);
        }
        return res;
    }

要将这个新的 LabelProvider 分配给 ChartPlotter,请在 XAML 中命名要标记的轴或在 C# 中将其创建为对象:

yAxis.LabelProvider = new ZazkapulskLabelProvider();

不要使用上层溶液。 使我的 VS 出现许多编译器错误。 我在 VS2013 上尝试了 3 小时的解决方案,但没有奏效。 使用该解决方案,其中函数绘制图形:

 dimSeviyesiAxis.LabelProvider.CustomFormatter = (tickInfo) =>
        {
            return "%" + tickInfo.Tick.ToString();
        };

其中dimSeviyesiAxis 是xaml 轴名称,轴标签以“%”开头。 在返回之前,您可以编写任何条件语句。 这是源链接:

http://dynamicdatadisplay.codeplex.com/discussions/462842

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM