WPF сделать интерактивные диаграммы - PullRequest
1 голос
/ 16 ноября 2009

Я использую System.Windows.Controls.DataVisualization.Toolkit для диаграмм в моем WPF приложении. Код для диаграммы:

<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 ]

1 голос
/ 16 ноября 2009

В элементе управления WPF Toolkit нет кода для обработки перетаскивания мышью, поэтому вам придется написать его самостоятельно.

У вас должна быть возможность создать подкласс LineDataPoint для добавления функции перетаскивания, затем создать подкласс LineSeries и переопределить CreateDataPoint() для создания пользовательских элементов LineDataPoint.

В этом случае ваш ItemsSource будет представлять собой не IEnumerable значений (например, IEnumerable<decimal>), а скорее объекты-держатели значений (например, IEnumerable<MyValueObject>). У объектов-держателей значений будет свойство, которое можно использовать для извлечения или установки значения в этой точке, что позволяет обновлять значение, устанавливая DependentValueBinding в TwoWay, привязку к вашему свойству. Возможно, вы сможете повторно использовать существующие объекты в своем приложении, а не создавать объект-держатель значений специально для этой цели.

0 голосов
/ 07 января 2012

Проверить эту библиотеку

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...