2009-11-16 62 views
1

我正在使用System.Windows.Controls.DataVisualization.Toolkit適用於我的WPF應用程序中的圖表。 對圖表的代碼是: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> 

我希望用戶能夠在任何時候點擊線系列,並將其拖到向上或向下,因此該值將被改變? 這就像一個雙向數據綁定,但我不知道該怎麼做。

回答

1

WPF Toolkit圖表控件沒有任何代碼來處理鼠標拖動,所以你必須自己寫。

您應該能夠繼承LineDataPoint以添加拖動功能,然後子類LineSeries並覆蓋CreateDataPoint()以創建您的自定義LineDataPoint項目。

在這種情況下,您的ItemsSource不會是IEnumerable的值(例如IEnumerable<decimal>),而是值持有者對象(例如IEnumerable<MyValueObject>)。值持有者對象將具有可用於檢索或設置該值的屬性,允許通過將DependentValueBinding設置爲TwoWay綁定到您的屬性來更新該值。您可能可以在應用程序中重用現有對象,而不是專門爲此創建值持有者對象。