I'm using a xamWebChart inside a xamWebTileView (aka TilePane inside a xamWebTileView) and when the TilePane is Maximized and Minimized it seems the xamWebChart has problems keeping up with the xamWebTileView's animation. We're currently rendering BarLine charts with up to 3 Series'. Is it possible I'm binding data to the chart incorrectly, causing the chart to become bulkier than it needs to be? I've tried this within a xamWebTileView that has 2 panes and 6 panes; the behavior is the same.
my guess is that SizeChanged is raised numerous times because the size is being animated. however, i went to test this out and found that the SizeChanged event was raised only once per maximize or minimize operation.
here is the XAML i used:
<Grid x:Name="LayoutRoot"> <igTile:XamWebTileView> <igTile:TilePane> <igChart:XamWebChart SizeChanged="XamWebChart_SizeChanged"> <igChart:XamWebChart.Series> <igChart:Series> <igChart:Series.DataPoints> <igChart:DataPoint Value="1" /> </igChart:Series.DataPoints> </igChart:Series> </igChart:XamWebChart.Series> </igChart:XamWebChart> </igTile:TilePane> </igTile:XamWebTileView> </Grid>
do you get the same result using this sample? do i need to change anything to reproduce what you're describing? what version of the controls are you using?
The performance is noticable even with only 100 total data points in 2 series in a Line Chart. Ideally, we would like to have 1 to 2 thousand data points, but then the performance comes to a real crawl. Its usually the worse when "unmaximizing" a tile that has the chart in it. It appears that the SizeChanged event of the chart fires way more than it needs to. Below is some debug written out of the different events that fire when I "unmaximize" the tile with the chart in it. Why does theh Size_Changed event fire so many times? Is there a good way to only allow this to fire one time so at least the app won't hang up so bad. I played with setting the RefreshEnabled property of the chart to False the first SizeChanged event and then starting a timer to reenable it a second later so it won't redraw so many times. This helps, but there is still a big delay. When I print the same debug code when I maximize a tile, it only fires the SizeChanged event once and the performance is good. Any help would be appreciated. Thanks.
LayoutTileView_MaximizedStateChanging
LayoutTileView_MaximizedStateChanged
Chart_SizeChanged - Previous Size(625,364) New Size(625,363)
Chart_SizeChanged - Previous Size(627,364) New Size(625,363)
Chart_SizeChanged - Previous Size(627,367) New Size(625,363)
Chart_SizeChanged - Previous Size(630,367) New Size(625,363)
Chart_SizeChanged - Previous Size(630,372) New Size(625,363)
Chart_SizeChanged - Previous Size(634,372) New Size(625,363)
Chart_SizeChanged - Previous Size(634,378) New Size(625,363)
Chart_SizeChanged - Previous Size(640,378) New Size(625,363)
Chart_SizeChanged - Previous Size(640,386) New Size(625,363)
Chart_SizeChanged - Previous Size(648,386) New Size(625,363)
Chart_SizeChanged - Previous Size(648,397) New Size(625,363)
Chart_SizeChanged - Previous Size(658,397) New Size(625,363)
Chart_SizeChanged - Previous Size(658,409) New Size(625,363)
Chart_SizeChanged - Previous Size(670,409) New Size(625,363)
Chart_SizeChanged - Previous Size(670,426) New Size(625,363)
Chart_SizeChanged - Previous Size(687,426) New Size(625,363)
Chart_SizeChanged - Previous Size(687,448) New Size(625,363)
Chart_SizeChanged - Previous Size(708,448) New Size(625,363)
Chart_SizeChanged - Previous Size(708,472) New Size(625,363)
Chart_SizeChanged - Previous Size(731,472) New Size(625,363)
Chart_SizeChanged - Previous Size(731,506) New Size(625,363)
Chart_SizeChanged - Previous Size(764,506) New Size(625,363)
Chart_SizeChanged - Previous Size(764,558) New Size(625,363)
Chart_SizeChanged - Previous Size(813,558) New Size(625,363)
Chart_SizeChanged - Previous Size(813,598) New Size(625,363)
Chart_SizeChanged - Previous Size(852,598) New Size(625,363)
Chart_SizeChanged - Previous Size(852,634) New Size(625,363)
Chart_SizeChanged - Previous Size(886,634) New Size(625,363)
Chart_SizeChanged - Previous Size(886,660) New Size(625,363)
Chart_SizeChanged - Previous Size(912,660) New Size(625,363)
Chart_SizeChanged - Previous Size(912,684) New Size(625,363)
Chart_SizeChanged - Previous Size(935,684) New Size(625,363)
Chart_SizeChanged - Previous Size(935,707) New Size(625,363)
Chart_SizeChanged - Previous Size(957,707) New Size(625,363)
Chart_SizeChanged - Previous Size(957,725) New Size(625,363)
Chart_SizeChanged - Previous Size(975,725) New Size(625,363)
Chart_SizeChanged - Previous Size(975,737) New Size(625,363)
Chart_SizeChanged - Previous Size(986,737) New Size(625,363)
Chart_SizeChanged - Previous Size(986,747) New Size(625,363)
Chart_SizeChanged - Previous Size(995,747) New Size(625,363)
Chart_SizeChanged - Previous Size(995,754) New Size(625,363)
Chart_SizeChanged - Previous Size(1002,754) New Size(625,363)
Chart_SizeChanged - Previous Size(1002,757) New Size(625,363)
Chart_SizeChanged - Previous Size(1005,757) New Size(625,363)
Chart_SizeChanged - Previous Size(1005,758) New Size(625,363)
Chart_SizeChanged - Previous Size(1006,758) New Size(625,363)
Chart_SizeChanged - Previous Size(1006,759) New Size(625,363)
Chart_SizeChanged - Previous Size(1007,759) New Size(625,363)
How many datapoints are in your chart? What is the ChartType?
We have fixed the rendering issues related to the TileView, but high-performance charting is still something we're working on. Resizing a chart with hundreds or thousands of datapoints can be slow at times.
I have also been waiting for this fix. I just downloaded the newly released Silveright Data Visualization 2009.2 and I am still experiencing these same performance issues with maximizing and minimizing a xamWebTileView that has a XamWebChart in it. Are you sure it was fixed in 2009.2 for Data Visualization? When I put other controls in the xamWebTileView besides the XamWebChart, everything performs just fine. It's just once I put one xamWebChart in a tile that performance comes to a crawl when resizing the tiles.
Information on upcoming service release dates can be found here:
http://ko.infragistics.com/support/default.aspx#ServiceReleases
Devin