WPF DataVisualization图表格式标签

时间:2017-12-04 09:42:10

标签: wpf vb.net xaml charts datavisualization.toolkit

我在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环境中可用的代码。

1 个答案:

答案 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。此外,如果您有多个系列,则需要将相同的轴应用于所有系列。

希望这有助于其他人。

相关问题