C1Chart for WPF轴:ToolTip显示鼠标所在位置的日期信息

在上一章日期轴的显示中,我们介绍了如何设置X轴为日期类型。本文就在此基础上,介绍如何展示日期类型的Tooltip。

发布于 2015/09/28 00:00

ComponentOne Enterprise

C1Chart for WPF轴:ToolTip显示鼠标所在位置的日期信息

在上一章日期轴的显示中,我们介绍了如何设置X轴为日期类型。

本文就在此基础上,介绍如何展示日期类型的Tooltip。

添加标记标签

在添加标记标签前,请阅读代码添加标记文章,按照文章所示内容给图表添加标记。

按照提示的步骤通过如下代码给图表添加标记,使得鼠标Hover的时候,可以显示数据信息。

var sp = new StackPanel();
            var tb1 = new TextBlock();
            var bind1 = new Binding();
            bind1.Source = obj;
            bind1.StringFormat = "x={0:#.##}";
            bind1.Path = new PropertyPath("DataPoint.X");
            tb1.SetBinding(TextBlock.TextProperty, bind1); 
 
            var tb2 = new TextBlock();
            var bind2 = new Binding();
            bind2.Source = obj;
            bind2.StringFormat = "y={0:#.##}";
            bind2.Path = new PropertyPath("DataPoint.Y");
            tb2.SetBinding(TextBlock.TextProperty, bind2); 
 
            sp.Children.Add(tb1);
            sp.Children.Add(tb2); 
 
            bdr.Child = sp;

但是由于X轴是日期轴(OADate),此时节点的换算会不正确。 对于这个问题,需要自定义一个DateConverter。

 

DateConverter

从IValueConverter接口继承,自定义Datetime的Converter,将doulbe的value转成DateTime类型。

这里需要用到DateTime.FromOADate方法进行转换。

参考如下:

public class DateTimeConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            double v = (double)value;
            DateTime dt;
            if (!double.IsNaN(v))
            {
                dt = DateTime.FromOADate(v);
            }
            else
            {
                dt = DateTime.Now;
            }
            return dt;
        

        }



        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {

            throw new NotImplementedException();

        }

    }

 

给Binding设置converter

这个时候需要第一步里添加的标记标签的代码进行更改,给X轴设置我们上一步实现的Converter。

代码参考:

var bind1 = new Binding();
            bind1.Source = obj;
            bind1.StringFormat = "x={0:yyyy/MM/dd}";
            bind1.Converter = new DateTimeConverter();
            bind1.Path = new PropertyPath("DataPoint.X");

 

实现的效果如下:

 

示例参考:

ChartWPF_DateTooltip.zip (17.01 kb)

 

更多资源

C1Chart的在线英文产品文档地址: 

http://helpcentral.componentone.com/nethelp/c1wpfchart/#!Documents/componentonechartforwpf.htm

 

如果你对C1Chart感兴趣,请到我们的官网下载最新版本:/developer/componentone-winform/controls/chart

如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn/showforum-68.html

 

另外,更多信息,欢迎阅读《C1Chart for WPF初级教程》系列文章

初遇。Getting Started(上)

初遇。Getting Started(下)

类型。穿Prada的女王(上)

类型。穿Prada的女王(下)

数据。和数据源相关的那些事(一)

数据。和数据源相关的那些事(二)

数据。和数据源相关的那些事(三)

数据。和数据源相关的那些事(四)

标记和标签。撕名牌大战(一)

标记和标签。撕名牌大战(二)

标记和标签。撕名牌大战(三)

导出(PDF,EXCEL) 

多轴图表 

轴的动态绑定

实现轴注释的高级自定义

颜色和大小。数据点的自定义(一)

符号。数据点的自定义(二)

基础介绍。XAML动画(一)

基础介绍。XAML动画(二)

基础介绍。XAML动画(三)

基础介绍。XAML动画(四)

ComponentOne Enterprise | 下载试用

ComponentOne 是一套专注于企业 .NET开发、支持 .NET Core 平台,并完美集成于 Visual Studio 的第三方控件集,包含 300 多种 .NET开发控件,提供表格数据管理、数据可视化、报表和文档、日程安排、输入和编辑、导航和布局、系统提升工具等七大功能,被誉为“.NET开发的‘瑞士军刀’”。

ComponentOne 为您提供专业的产品咨询服务,并由技术支持工程师为您1对1解答。>> 发帖提问

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态