我在WPF中使用DataVisualization图表并在代码中创建BarSeries,但我无法在X轴上格式化数字。
我不想在XAML中执行此操作,因为图表的类型可能因用户选择而异,并且在代码中执行所有这些操作似乎更灵活,而不是使用不同的图表类型。数据系列的数量也有波动。
XAML只是
xmlns:chttk="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
<chttk:Chart Name="DataChart1" Margin="0" Title="{Binding AxisXTitle}" DataContext="{Binding GraphData1}" Style="{StaticResource ChartStyle1}" BorderBrush="Transparent"/>
背后的代码是
Dim dataChart As System.Windows.Controls.DataVisualization.Charting.Chart = DataChart1
Dim s As New System.Windows.Controls.DataVisualization.Charting.BarSeries
s.Title = "My Chart"
s.DependentValuePath = "Value"
s.IndependentValuePath = "Key"
s.DataContext = New Binding("[0]")
s.ItemsSource = CType(itm, IEnumerable)
dataChart.Series.Add(s)
DataContext是一个DataSeries.Collection,其数据位于KeyValuePairs中。这些值都是Double值。
图表正在显示,但轴上的值未格式化,例如120000.我发现了一些指向不同Axis类型和LabelFormat以及LabelStyle.Format的示例,但我找不到任何在WPF环境中可用的代码。
答案 0 :(得分:0)
感谢您的输入 - 我终于设法让它使用以下代码:
Dim n As Integer
dataChart.Series.Clear()
Dim x As New System.Windows.Controls.DataVisualization.Charting.LinearAxis
x.Orientation = DataVisualization.Charting.AxisOrientation.X
Dim y As New System.Windows.Controls.DataVisualization.Charting.CategoryAxis
y.Orientation = DataVisualization.Charting.AxisOrientation.Y
Dim stl As New Style(GetType(System.Windows.Controls.DataVisualization.Charting.AxisLabel))
stl.Setters.Add(New Setter(System.Windows.Controls.DataVisualization.Charting.AxisLabel.StringFormatProperty, "{0:#,0}"))
x.AxisLabelStyle = stl
For Each itm As Object In o
Dim srs As New System.Windows.Controls.DataVisualization.Charting.BarSeries
pi = itm.GetType.GetProperty("SeriesTitle")
srs.Title = pi.GetValue(itm, Nothing)
srs.DependentValuePath = "Value"
srs.IndependentValuePath = "Key"
srs.DataContext = New Binding("[" & n & "]")
srs.ItemsSource = CType(itm, IEnumerable)
srs.DependentRangeAxis = x
srs.IndependentAxis = y
dataChart.Series.Add(srs)
n += 1
Next
绊倒我的一些陷阱是添加了轴。您需要将正确类型的轴添加到DependentRangeAxis或IndependentAxis。对于BarSeries,DependentRangeAxis是X轴,可以是LinearAxis,IndependentAxis是Y轴,对我来说是CategoryAxis。此外,如果您有多个系列,则需要将相同的轴应用于所有系列。
希望这有助于其他人。