我在我的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>
我希望用户能够在任何点单击线系列并将其向上或向下拖动,以便更改值? 这就像双向数据绑定,但我不知道如何做到这一点。
答案 0 :(得分:1)
WPF Toolkit图表控件没有任何代码来处理鼠标拖动,因此您必须自己编写。
您应该能够继承LineDataPoint
以添加拖动功能,然后创建子类LineSeries
并覆盖CreateDataPoint()
以创建自定义LineDataPoint项。
在这种情况下,您的ItemsSource
不是IEnumerable值(例如IEnumerable<decimal>
),而是值持有者对象(例如IEnumerable<MyValueObject>
)。值持有者对象将具有可用于在该点检索或设置值的属性,允许通过将DependentValueBinding
设置为与您的属性绑定的TwoWay
来更新值。您可以在应用程序中重用现有对象,而不是专门为此目的创建值保持器对象。
答案 1 :(得分:0)