大家好:我是WPF新手(其实也用了好几个月了,但一直没空细细研究WPF),使用的是Toolkit里的那个Chart控件,运行起来的效果如下:
我的问题是:为什么纵坐标有2个0.06
以下是xaml代码:
<Window x:Class="FuckChart.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:chart="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" Title="MainWindow" Height="350" Width="525"> <Grid> <chart:Chart Title="Test" Name="chart"> <chart:LineSeries Name="line" ItemsSource="{Binding Data}" IndependentValueBinding="{Binding Key}" DependentValueBinding="{Binding Value}" > </chart:LineSeries> </chart:Chart> </Grid> </Window>
ViewModel的代码:
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq; using System.Text; namespace FuckChart { class ViewModel { public ViewModel() { this.Data = new ObservableCollection<System.Collections.Generic.KeyValuePair<int, decimal>>(); this.Data.Add(new System.Collections.Generic.KeyValuePair<int, decimal>(1, 0.07m)); this.Data.Add(new System.Collections.Generic.KeyValuePair<int, decimal>(2, 0.06m)); this.Data.Add(new System.Collections.Generic.KeyValuePair<int, decimal>(3, 0.05m)); } public ObservableCollection<System.Collections.Generic.KeyValuePair<int,decimal>> Data { get; set; } } }
如果纵坐标的值大于大于等于0.1就没这个问题。我想应该是存在一个设置纵坐标间距之类的属性吧,但是这个类里属性实在太多,没有找到,上网也没有查到,麻烦各位园友来看看。谢谢
个人怀疑以上的0.05 0.06 0.06 0.07 0.07 其实为0.050 0.055 0.060 0.065 0.070,因为显示位数问题四舍五入了。可以考虑一下把这个类型 decimal 换成其他的。
我试过float和double也是这样的。总不能转换为string吧。:-D
@会长: 没用过chart,应该可以在XAML设置纵坐标显示样式解决。
@会长: http://www.cnblogs.com/HQFZ/p/4424249.html 第4点改变样式可以看一下,应该能解决问题。
@军号的备忘录: 好的,我试试,谢谢
@会长: 通过设置样式可以解决问题,原来默认最多就显示2位小数,谢谢阁下。
不清楚,顶一手
chart2.ChartAreas[0].AxisY.LabelStyle.Format //格式化
chart2.ChartAreas[0].AxisY.Interval //设置刻度间隔
这2个Y的属性你去试试
我用的不是这个chart控件,你说的这个是winform里用的吧,我用的是这个:http://blogs.msdn.com/b/wpfsdk/archive/2009/06/25/new-chart-controls-for-wpf.aspx
@会长: 那你也去找找他的属性把,我看你默认的是5格,可是你就传了3个参数给它
@稳稳的河: 好的,多谢了,昨天已经把问题解决了
我能说在我电脑上直接打开运行你的源文件,毫无这个问题!!!!
不好意思,我那代码可能让我改了些,数字设置的小点试试:
this.Data.Add(new System.Collections.Generic.KeyValuePair<int, decimal>(1, 0.07m)); this.Data.Add(new System.Collections.Generic.KeyValuePair<int, decimal>(2, 0.06m)); this.Data.Add(new System.Collections.Generic.KeyValuePair<int, decimal>(3, 0.05m));
我重新上传了一次又,如果有兴趣可以再看看,谢谢。