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>) になります。値ホルダー オブジェクトには、その時点で値を取得または設定するために使用できるプロパティがあり、プロパティDependentValueBindingへのTwoWayバインディングに設定することで値を更新できます。この目的専用の値ホルダー オブジェクトを作成するのではなく、既存のオブジェクトをアプリケーションで再利用できる場合があります。

于 2009-11-16T16:54:10.953 に答える