WP7 Chart中柱状图 点击获取柱条的横纵坐标

WP7中Chart 控件很好用,但是想要添加点击事件 获取每条数据,然后弹出一个窗口。。。。

  private ColumnSeries columnSeries;

   myListOfChartData = new List<ChartData>();
  myListOfChartData.Add(new ChartData{xProperty="6",yNumber=1});
  myListOfChartData.Add(new ChartData { xProperty = "7", yNumber= 2 });
  myListOfChartData.Add(new ChartData { xProperty = "8", yNumber= 3 });
  myListOfChartData.Add(new ChartData { xProperty = "9", yNumber= 9 });
  myListOfChartData.Add(new ChartData { xProperty = "10", yNumber= 13 });

           columnSeries = new ColumnSeries();//实例化一个Series:
           columnSeries.ItemsSource = myListOfChartData;  //设置数据源
           columnSeries.DependentValueBinding = new Binding("yNumber");       //后台进行数据绑定 
           columnSeries.IndependentValueBinding = new Binding("xProperty");
           columnSeries.Title = "每次服务获得奖券数";

           MyChartOfColumnSeries.Series.Add(columnSeries);//为Chart绑定“显示类型”
           MyChartOfColumnSeries.Title = "";

这是添加一个ColumnSeries到Chart中,想要得到点击ColumnSeries的每条数据,可以为ColumnSeries添加点击事件

 columnSeries.MouseLeftButtonDown += new MouseButtonEventHandler(Series_MouseLeftButtonDown);


(1)之后怎样才能找到 我点击的是哪个数据条呢?

网上说:你用VisualTreeHelper可以找到每个柱子,就是rectange,然后注册每个柱子的MouseClicked事件。比如右键向下点击,然后再事件里写你需要的方法

public Rectangle FindRectangle(DependencyObject parent)
        {
            if (parent == null)
            {
                return null;
            }
            Rectangle rec = null;
            int count = VisualTreeHelper.GetChildrenCount(parent);
            for (int i = 0; i < count; i++)
            {
                var child = VisualTreeHelper.GetChild(parent, i);
                rec = child as Rectangle;
                if (rec != null)
                {
                    // 找到,注册事件
                    rec.MouseLeftButtonDown += new MouseButtonEventHandler(rec_MouseLeftButtonDown);
                    break;
                }
                else
                {
                    return FindRectangle(child);
                }
            }
            return rec;
        }
        void rec_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            // Write your codes here
        }

或者

    ColumnSeries series = new ColumnSeries();
        series.MouseLeftButtonUp += new MouseButtonEventHandler(series_MouseLeftButtonUp); 
        private void ColumnSeries_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            Rectangle rec = e.OriginalSource as Rectangle;
        }

这样可以找到点击的是哪个矩形块

(2)但是我要回去矩形块,柱子所对应的横纵坐标怎么么办呢?

//处理图表点击

   private void Series_MouseLeftButtonDown(object sender,MouseEventArgs e)
   {
            Rectangle rect=e.OriginalSource as Rectangle;
           ChartData  da=rect.DataContext as ChartData;
            if (da != null)
            {
                string x = da.xProperty;
                MessageBox.Show(x);
            }
  }

这样的到chart关联的DataContext为ChartData,也就是我们为ColumnSeries绑定的数据

接着就可以去除对应的数据了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值