2014-04-14 1 views
0

쉽게 해결할 수없는이 문제를 겪고 있습니다.Dynamaically StackedBarSeries 차트 용 시리즈 만들기 Silverlight

여기 그래서 기본적으로

<toolkit:Chart Height="250" x:Name="ProductSalesChart" > 
     <toolkit:Chart.Series> 
      <toolkit:StackedBarSeries> 
       <toolkit:SeriesDefinition Title="Series1" ItemsSource="{Binding ProductA}" IndependentValueBinding="{Binding Milestone}" DependentValueBinding="{Binding Sales}"> 
       </toolkit:SeriesDefinition> 
       <toolkit:SeriesDefinition Title="Series2" ItemsSource="{Binding ProductB}" IndependentValueBinding="{Binding Milestone}" DependentValueBinding="{Binding Sales}"> 
       </toolkit:SeriesDefinition> 

       <toolkit:StackedBarSeries.IndependentAxis> 
        <toolkit:CategoryAxis Orientation="X"></toolkit:CategoryAxis> 
       </toolkit:StackedBarSeries.IndependentAxis> 

       <toolkit:StackedBarSeries.DependentAxis> 
        <toolkit:LinearAxis Orientation="Y" ShowGridLines="True"></toolkit:LinearAxis> 
       </toolkit:StackedBarSeries.DependentAxis> 

      </toolkit:StackedBarSeries> 
     </toolkit:Chart.Series> 
    </toolkit:Chart> 

내 XAML

이며, Y 축의 각 제품에 대한 판매의 X 축 및 번호에 이정표와의 누적 차트. 내가 검색하는 제품이 데이터베이스에서 가져온 것이고 변경 될 수 있다는 점을 제외하면이 기능이 작동합니다. 위의 차트에서 두 개로 하드 코드했습니다 (Series1 및 Series2). 이 시리즈를 View 모델 객체에 바인딩하여 자동으로 위 또는 아래로 이동할 수있는 방법이 있습니까? 내 결과를 바탕으로

몇 가지 옵션 :

A) 뷰 모델에서 차트 컨트롤에 액세스하여 프로그램 시리즈를 추가합니다. 그러나 이것이 MVVM을 깨뜨리지는 않습니다. 또한 뷰 모델에서 차트 컨트롤에 대한 참조를 얻으려면 어떻게해야합니까? 이 API가 있습니까? 이벤트 트리거 사용이 작동하지 않습니다. (최소한 OnLoaded 차트의 경우)

b) 기본 Chart 클래스를 상속하는 고유 한 Chart 클래스를 만듭니다. 이게 얼마나 쉬운가요? 좋은 표본?

다른 아이디어?

답변

0

바인딩, 특히 MVVM 방식으로 사용하는 것과 관련하여 ToolKit 차트를 사용하려고 할 때 괜찮은 문서를 찾는 데 실질적인 문제가있었습니다. 모든 예제는 XAML에서 정의 된 계열 (귀하의 것과 유사 함)이거나 데이터가 아닌 차트의 비교적 사소한 요소를 바인딩 한 것입니다.

동일한 문제가 있었기 때문에 모든 답변을 얻을 수는 없지만 데이터가 다른 방식으로 작동하는 데 도움이 될 수 있습니다.

나는 Graphite Charts http://www.graphitecharts.com/을 주로 사용했기 때문에 문서를 작성했기 때문에 실제로 각 클래스의 기초와 그 사용법을 정리하지 않고 작업을 시작할 수있었습니다.

(a) 뷰의 명령에 응답하여 뷰 모델에서 모든 데이터 액세스를 수행했습니다. 뷰의 다른 액션은 뷰의 코드 숨김에 의해 처리되며, 뷰 모델에 의해 노출 된 데이터로부터 새로운 시리즈 콜렉션, 시리즈 및 데이터 포인트를 생성하는 것은 이러한 액션입니다. 예를 들어 시리즈 컬렉션을 VM 속성에 바인딩하는 방법을 찾지 못했지만 코드 숨김에서 시리즈를 작성하는 것은 정상적으로 작동했습니다. 시리즈 (및 데이터 포인트)가 뷰 객체이기 때문에 실제로는 분리 된 분리입니다.

(b) 나는 내 자신을 구현하려고 시도하지 않았습니다. 그래파이트를 사용하거나 (또는 ​​실버 라이트를 사용) VM을 사용하여 데이터를 가져 오는 방법을 시도하지만 뷰에서 차트를 작성하십시오.