我在WPF应用程序中使用 System.Windows.Controls.DataVisualization.Toolkit 表示图表 . 图表的代码是:
<chartingToolkit:Chart>
<!-- Volume -->
<chartingToolkit:LineSeries
Title="Volume (M)"
ItemsSource="{StaticResource StockDataCollection}"
IndependentValuePath="Date"
DependentValuePath="Volume"/>
<!-- Price -->
<chartingToolkit:LineSeries
Title="Price ($)"
ItemsSource="{StaticResource StockDataCollection}"
IndependentValuePath="Date"
DependentValuePath="Price"/>
<chartingToolkit:Chart.Axes>
<!-- Axis for custom range -->
<chartingToolkit:LinearAxis
Orientation="Y"
Minimum="0"
Maximum="100"
ShowGridLines="True"/>
<!-- Axis for custom labels -->
<chartingToolkit:DateTimeAxis
Orientation="X">
<chartingToolkit:DateTimeAxis.AxisLabelStyle>
<Style TargetType="chartingToolkit:DateTimeAxisLabel">
<Setter Property="StringFormat" Value="{}{0:MMM d}"/>
</Style>
</chartingToolkit:DateTimeAxis.AxisLabelStyle>
</chartingToolkit:DateTimeAxis>
</chartingToolkit:Chart.Axes>
</chartingToolkit:Chart>
我希望用户能够在任何点单击线系列并将其向上或向下拖动,以便更改值?这就像双向数据绑定,但我不知道如何做到这一点 .
2 回答
WPF Toolkit图表控件没有任何代码来处理鼠标拖动,因此您必须自己编写 .
您应该能够继承
LineDataPoint
以添加拖动功能,然后子类LineSeries
并覆盖CreateDataPoint()
以创建自定义LineDataPoint项目 .在这种情况下,
ItemsSource
将不是IEnumerable值(例如IEnumerable<decimal>
),而是值持有者对象(例如IEnumerable<MyValueObject>
) . 值持有者对象将具有可用于在该点检索或设置值的属性,允许通过将DependentValueBinding
设置为与属性的TwoWay
绑定来更新值 . 您可以在应用程序中重用现有对象,而不是专门为此目的创建值保持器对象 .检查这个库
http://www.fusioncharts.com/demos/features/#visual-editing-of-data