2009-11-16 6 views
1

WPF 응용 프로그램의 차트에는 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> 

나는 사용자가 어느 시점에 라인 시리즈를 클릭하고 위로 또는 아래로 그래서 값이 변경됩니다로 드래그 할 수있을까요? 이것은 양방향 데이터 바인딩과 비슷하지만 어떻게 할 수 있는지 알지 못합니다.

답변

1

WPF Toolkit 차트 컨트롤에는 마우스 끌기를 처리 할 코드가 없으므로 직접 작성해야합니다.

당신은 사용자 정의 LineDataPoint 항목을 생성 한 후, 기능을 끌어 추가 LineDataPoint를 서브 클래스 LineSeries를 서브 클래스 화해, CreateDataPoint()를 오버라이드 (override) 할 수 있어야한다.

이 경우 사용자의 ItemsSource은 값의 IEnumerable (예 : IEnumerable<decimal>)이 아니라 값 홀더 객체 (예 : IEnumerable<MyValueObject>)가됩니다. 값 보유자 개체에는 해당 지점에서 값을 검색하거나 설정하는 데 사용할 수있는 속성이 있습니다. 속성에 DependentValueBindingTwoWay 바인딩으로 설정하여 값을 업데이트 할 수 있습니다. 이 목적을 위해 특별히 값 홀더 객체를 만드는 대신 응용 프로그램에서 기존 객체를 재사용 할 수 있습니다.