找回密码
 立即注册

QQ登录

只需一步,快速开始

visualmaster

银牌会员

16

主题

64

帖子

3892

积分

银牌会员

积分
3892

活字格认证

visualmaster
银牌会员   /  发表于:2015-5-18 16:10  /   查看:13352  /  回复:13
我是想用Binding 的方式来控制多维度和多指标,但是X,Y轴都不显示,请帮忙看看怎么搞吧

附件是我从项目里抽离出来的代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

13 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-5-18 18:25:00
沙发
回复 1楼visualmaster的帖子

感谢你对该问题的反馈。
你的问题我们收到了。
调查后给你反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-5-19 10:21:00
板凳
回复 1楼visualmaster的帖子

你好。从你的Demo来看,你的问题属于绑定到一个ObservableCollection集合,并且使用了SeriesIemsSource做序列的绑定。
我们博客有一篇文章就是介绍使用C1Chart的SeriesItemsSource快速绑定图表序列,供你参考:http://blog.gcpowertools.com.cn/ ... iesItemsSource.aspx
果有什么理解不对,还请指出。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
visualmaster
银牌会员   /  发表于:2015-5-19 11:32:00
地板
回复 3楼Alice的帖子

我的意思是想动态的画X,Y轴的数量,而不是在Xaml 里写死,可能我的代码有问题,比如2个Y轴,2个X轴,或者1个X轴,3个Y轴
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-5-19 14:29:00
5#
回复 4楼visualmaster的帖子

你好。
根据我的理解,你需要动态绑定数据轴(数据轴的个数不固定)。

如果是在XAML下添加多轴,可以使用如下代码:
  1. <c1:C1Chart Name="c1Chart1" ChartType="Line" >
  2. ..
  3.     <c1:C1Chart.View>
  4.         <c1:ChartView>
  5.                   <c1:Axis Name="ay2" AxisType="Y" Position="Far" Min="0" Max="10" />
  6.       <c1:Axis Name="ay3" AxisType="Y" Position="Far" Min="0" Max="20" />
  7.       <c1:Axis Name="ay4" AxisType="Y" Position="Far" Min="0" Max="50" />        
  8. </c1:ChartView>
  9.     </c1:C1Chart.View>
  10. ...
  11. </c1:C1Chart>
复制代码

这样就可以添加两个Y轴,不需要绑定。
但是如果你想要AxisY属性在view model的绑定到某些属性,很抱歉AxisY属性并不是dependency property。它不能动态的设置轴的名称。
但是你可以通过代码来添加实现动态绑定。
基本思路就是通过 c1Chart1.View.Axes.Add方法去动态的添加Y轴的数量。
  1.    
  2.                     Axis ay = new Axis();
  3.                     ay.AxisType = AxisType.Y;
  4.                     ay.Min = tag.ConfigMin;
  5.                     ay.Max = tag.ConfigMax;
  6.                     ay.Name = report.ayName;//从数据源获取
  7.                     c1Chart1.View.Axes.Add(ay);
  8.         }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
visualmaster
银牌会员   /  发表于:2015-5-19 15:04:00
6#
回复 5楼Alice的帖子

我知道不是DP,所以我用了附加依赖属性,添加效果应该是一样的,但是不显示,是不是需要调用下刷新方法或者什么的,我不是写了个扩展类嘛,在里边写了c1ChartView.Axes.Add(axis);
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-5-19 17:10:00
7#
回复 6楼visualmaster的帖子

你好。
你的示例里,通过Extesions创建DP类型和C1chart的轴建立联系。
但是BindingAxisChanged事件只执行了一次,在初始化的时候,这个时候ObservableCollection<Axis>还是空,所以你的轴是没有添加成功的。
为了不改变你的代码基本逻辑,在你的代码基础上做了一些修改,请参考如下示例:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
visualmaster
银牌会员   /  发表于:2015-5-21 11:39:00
8#
回复 7楼Alice的帖子

是的,好使了,但是还有一个疑问,如果加2个Y轴的话,而且最大值和最小值都是Auto 的,那怎么能让显示不同的值,比如一个显示的是指标1,假如0-100,一个显示的指标2,假如0.1-1,就是怎么指定Axis 和一个指标关联起来
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-5-21 12:27:00
9#
回复 8楼visualmaster的帖子

轴上有Max,Min属性可以设置轴的范围。
如何设置不同值请参考博客:
http://blog.gcpowertools.com.cn/ ... F_MultipleAxis.aspx
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
visualmaster
银牌会员   /  发表于:2015-5-28 15:58:00
10#
回复 9楼Alice的帖子

Max 和Min 值我不知道的话不就没法设置了嘛?难道要循环一下所有的数据,找出Max 和Min 吗? 有没有能和指标绑定的方式,然后自动找出Max 和Min
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部