Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF Toolkit Charting and IndependentValueBinding, IndependentValuePath

I'm facing a problem with the charting engine from the WPF toolkit.

I haven't moved the data to a proper object model, so the ItemSource is backed with a DataView.

First attempt

<chartingToolkit:ScatterSeries x:Name="TargetSeries" 
  DataPointStyle="{StaticResource TargetStyle}"  
  ItemsSource="{Binding Path=TargetSeriesData}"
  IndependentValueBinding="{Binding Path=TargetSeries_X}" 
  DependentValueBinding="{Binding Path=TargetSeries_X}" />

This crashes because I believe the bindings are considered as the values to the plot or some sort of mismatch.

Second attempt

<chartingToolkit:ScatterSeries x:Name="TargetSeries" 
  DataPointStyle="{StaticResource TargetStyle}" 
  ItemsSource="{Binding Path=TargetSeriesData}"
  IndependentValuePath="{Binding Path=TargetSeries_X}"
  DependentValuePath="{Binding Path=TargetSeries_X}" />

This crash happens during the initialization step because the Path properties aren't backed with dependency properties and therefore cannot be bound.

Third attempt

<chartingToolkit:ScatterSeries x:Name="TargetSeries" 
  DataPointStyle="{StaticResource TargetStyle}"  
  ItemsSource="{Binding Path=TargetSeriesData}"
  IndependentValuePath="targetFooXColumnName" 
  DependentValuePath="targetFooYColumnName" />

Now this works! But I wanted to use the binding so I can switch from using the targetFooXColumnName to the targetFooBarXColumnName. So this solution will cause a whole lot of hacky looking code to switch the Path manually.

Is there a way to fix this? Can I use some sort of converter to get the Binding properties to correctly pull the data from the columns in the DataView?

Thanks, Joel

like image 376
Joel Barsotti Avatar asked Jun 02 '10 19:06

Joel Barsotti


1 Answers

I think your application crashing on reason is "you haven't moved the data to a proper object model"

i can try Binding in ScatterSeries its working with out crashes: Like

<Grid Name="grid_Sample" Loaded="grid_Sample_Loaded">
    <DVC:Chart Canvas.Top="80" Canvas.Left="10" Name="mcChart"
       Width="400" Height="250"
       Background="LightSteelBlue">
        <DVC:Chart.Series>
            <DVC:ScatterSeries x:Name="TargetSeries" 
                             ItemsSource="{Binding sampleList}"
      IndependentValueBinding="{Binding Path=TargetSeries_X}"
        DependentValueBinding="{Binding Path=TargetSeries_Y}">
    </DVC:ScatterSeries>
        </DVC:Chart.Series>
    </DVC:Chart>
</Grid>

 private void grid_Sample_Loaded(object sender, RoutedEventArgs e)
    {
        sampleList = new ObservableCollection<SampleTest>() { 
            new SampleTest(){TargetSeries_X=20,TargetSeries_Y=50},
        new SampleTest(){TargetSeries_X=25,TargetSeries_Y=60},
        new SampleTest(){TargetSeries_X=30,TargetSeries_Y=50},
        new SampleTest(){TargetSeries_X=40,TargetSeries_Y=60}
        };
        ((ScatterSeries)mcChart.Series[0]).ItemsSource = sampleList; 
    }

According to My Knowledge please try with Proper model for binding ItemsSource to ScatterSeries.

like image 151
Gupta Avatar answered Oct 18 '22 01:10

Gupta