找回密码
 立即注册

QQ登录

只需一步,快速开始

fxdmhtt

初级会员

9

主题

38

帖子

221

积分

初级会员

积分
221

活字格认证微信认证勋章

fxdmhtt
初级会员   /  发表于:2015-8-19 01:23  /   查看:7574  /  回复:9
在C1Chart For WPF中我通过XAML设置ChartPanelObject添加标签。显示没有问题,功能正常,但{0:C}格式下默认的货币符号是美元符号,请问如何更改为人民币符号?(通过XAML)
X轴是日期格式,datasource是yyyy-MM-dd格式,X轴绑定后通过AnnoFormat能正确显示X轴,但在ChartPanelObject中始终不能正确显示日期(显示为一个5位数的数字),猜测是因为C1Chart内部存储时使用了内部格式,格式为数值类型。请问我该如何设置,才能在ChartPanelObject中正确显示日期(yyyy-MM-dd)?谢谢。

版本VS2013,C1 2014V1。

9 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-8-19 10:03:00
沙发
回复 1楼fxdmhtt的帖子

谢谢你的反馈。
1.{0:C}代表使用系统的货币符号,你的系统和VisualStudio是否是英文的?如果是,你需要改变系统为中文的。
2.这里需要OADate的转换,convert DateTime为double类型。
如下代码请参考:
  1. DataSet ds = new DataSet();
  2. sqlDataAdapter1.Fill( ds);

  3. int nr = ds.Tables[0].Rows.Count;
  4. DateTime[] x = new DateTime[nr];
  5. double[] y = new double[nr];

  6. for(int i=0; i{
  7. x = DateTime.Parse(ds.Tables[0].Rows["OrderDate"].ToString());
  8. y = double.Parse(ds.Tables[0].Rows["Freight"].ToString());
  9. }

  10. C1.Win.C1Chart.Axis xa = c1Chart1.ChartArea.AxisX;

  11. // set axis annotation format
  12. xa.AnnoFormat = C1.Win.C1Chart.FormatEnum.DateShort;

  13. // set axis maximum
  14. xa.Max = DateTime.Now.ToOADate();

  15. // remove old data
  16. c1Chart1.ChartGroups[0].ChartData.SeriesList.Clear();

  17. // add new series and put data in
  18. C1.Win.C1Chart.ChartDataSeries cds =
  19. c1Chart1.ChartGroups[0].ChartData.SeriesList.AddNewSeries();
  20. cds.X.CopyDataIn(x);
  21. cds.Y.CopyDataIn(y);
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
fxdmhtt
初级会员   /  发表于:2015-8-19 22:38:00
板凳
第一个问题补充:System.Globalization.NumberFormatInfo.CurrentInfo中显示的货币符号是正确的,但是不知为何只要是格式化为货币就是美元符号。有一个异常点就是C1ChartData和C1ChartView的默认Language都是en-us,不知道问题出在哪里。
系统和vs当然都是中文版:
Windows:cn_windows_8.1_enterprise_with_update_x64_dvd_4048578.iso
Visual Studio:cn_visual_studio_ultimate_2013_x86_dvd_3009109.iso
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-8-20 12:40:00
地板
回复 3楼fxdmhtt的帖子

请提供一个简单的Demo,我们帮你看看。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
fxdmhtt
初级会员   /  发表于:2015-8-22 00:17:00
5#

还望不吝赐教,谢谢。
运行效果如图所示:

本帖子中包含更多资源

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

x
回复 使用道具 举报
KNight
中级会员   /  发表于:2015-8-23 13:40:00
6#
回复 5楼fxdmhtt的帖子

方法一:在XMAL的Window里加属性:Language="zh-CN"(该页面解决)
方法二:在Window标签中加入引用
  1. xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib"
复制代码
,然后在TextBox的Binding里加入
  1. ConverterCulture={x:Static sysglb:CultureInfo.CurrentUICulture}
复制代码
;不过该方法只是针对该文本框,其他的照常;
方法三:在App的OnStartup方法里,在base.OnStartup(e);之前加入
  1. FrameworkElement.LanguageProperty.OverrideMetadata(
  2.                                 typeof(FrameworkElement),
  3.                                 new FrameworkPropertyMetadata(
  4.                                         XmlLanguage.GetLanguage(
  5.                                         CultureInfo.CurrentCulture.IetfLanguageTag)));
复制代码
即可(全局解决);
参照:http://www.nbdtech.com/Blog/arch ... rrect-regional.aspx

评分

参与人数 1金币 +500 收起 理由
Alice + 500 奖励500金币

查看全部评分

回复 使用道具 举报
fxdmhtt
初级会员   /  发表于:2015-8-24 10:33:00
7#
回复 6楼KNight的帖子

能否请问一下问题出在什么地方?
回复 使用道具 举报
fxdmhtt
初级会员   /  发表于:2015-8-24 13:52:00
8#
结贴吧,谢谢老师。
回复 使用道具 举报
KNight
中级会员   /  发表于:2015-8-24 14:10:00
9#
回复 7楼fxdmhtt的帖子

因为NumberFormatInfo.CurrentInfo.CurrencySymbol;和CultureInfo.CurrentCulture.EnglishName;在获取时其默认值都是从系统中读取初始化的,而WPF中FrameworkElement.LanguageProperty.DefaultMetadata或者Window.LanguageProperty.DefaultMetadata中的语言默认值直接就是en-us;偶猜测的,具体的还是问专业人员吧
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-8-24 16:03:00
10#
回复 9楼KNight的帖子

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

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部