1

我正在为我的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>

我希望用户能够在任何时候单击线系列并将其向上或向下拖动,因此值将被更改?这就像双向数据绑定,但我不知道该怎么做。

4

2 回答 2

2

WPF Toolkit 图表控件没有任何代码来处理鼠标拖动,因此您必须自己编写。

您应该能够子类LineDataPoint化以添加拖动功能,然后子类化LineSeries和覆盖CreateDataPoint()以创建您的自定义 LineDataPoint 项目。

在这种情况下,您ItemsSource将不是值的 IEnumerable(例如IEnumerable<decimal>),而是值持有者对象(例如IEnumerable<MyValueObject>)。值持有者对象将具有可用于在该点检索或设置值的属性,允许通过设置到您的属性DependentValueBindingTwoWay绑定来更新值。您可能能够重用应用程序中的现有对象,而不是专门为此目的创建价值持有者对象。

于 2009-11-16T16:54:10.953 回答
0

检查这个库

http://www.fusioncharts.com/demos/features/#visual-editing-of-data

于 2012-01-06T21:27:33.193 回答