Hello!
Another that I have is this: Is it possible to override the zooming action so that the actual zoom doesn't happen (i.e. chart stays as it is), but instead a list of the points within the zoom window is returned, so that they can be filtered out to create a separate report on them?
Hi,
Please see: http://community.infragistics.com/forums/p/44025/242600.aspx#242600
Hope this helps!
-Graham
Before I proceed on this, I have a question: will it be possible to highlight somehow the points selected? Currently in our charts we highlight them with blue, but as I have read elsewhere on this forum that with XamDataChart it's not possible to style individual points. So, is that possible, and if yes -- how would I do it?
The markers are not especially complicated for you to make this modification. They are all in the default style of the chart.
If you still want to use the charts ability to auto pick a marker type for each series you can actually modify each of these marker datatemplates to suit your needs and then assign them to the various template properties on the chart.
You will see properties that read something like this "CircleMarkerTemplate", etc. If you replace each of these with your custom version (a slightly modified version of what we ship with the default style). Then the chart will automatically cycle through these and choose a unique shape per series.
<DataTemplate x:key="TriangleMarkerTemplate"> <Polygon Points="0, 0 4, 8 8, 0" Stretch="Fill" Fill="{Binding ActualItemBrush}" Stroke="{Binding Series.ActualMarkerOutline}" Strokethickness="0.5"> </Polygon> </DataTemplate>
As an example, this is the default triangle marker. By default it takes its color from the assigned color of the series. Your modified version would just get its brush from somewhere on the data item:
<DataTemplate x:key="TriangleMarkerTemplate"> <Polygon Points="0, 0 4, 8 8, 0" Stretch="Fill" Fill="{Binding Item.Color}" Stroke="{Binding Series.ActualMarkerOutline}" Strokethickness="0.5"> </Polygon> </DataTemplate>
The other markers are just as simple, for the most part.
Thank you very much (again :) for your help -- it works.
I have another question, though. Now that the MarketTemplate.Brush is bound to Point.Color, by default, if Point.Color is not set, the marker is just not drawn. Is there an easy way to make it so that if Point.Color is not defined, the color of the serie is used instead (i.e., the markers on the yellow line are yellow, on the blue line are blue, &c.)?
Any ideas?..
The simplest way would be to engineer it such that the data items had the series color in a property, unless they had a property directly set on them.
For example, if they had one property called ActualBrush, and one called Brush. ActualBrush could check to see if Brush was null and return the value for the series if so, Otherwize the value of Brush. And then you would bind to ActualBrush rather than Brush.
There are other ways to achieve this too, although they would require a bit of a more complex setup. In WPF you could use a PriorityBinding, but I don't believe you have access to that in Silverlight.
Well the data items (read: points) do have a Color property in them. The question is -- how do I access the serie color from inside the point?
There are many ways you could go about this. You could have a back reference from each data point to the series, or to the collection that contains them which could have a reference to the series. Or you could populate a default color property on each item with the color you expect the series to have or that you will manually assign to the series.
But how can I get access to the serie from datapoint, if I assign a list of datapoints to the series' ItemsSource?
Sorry for the delay in reply. You can see which brush a series is using by inspecting ActualBrush.
You can explicitely set the color a series should use by setting its Brush property.
Alternatively you can set the Brushes collection on the chart, to set the series of brushes that the chart should chose from in order to assign to the series in the chart.
OK, so there seems to be no easy way... But how about assigning colors to the series -- is that possible? Like, create a set of random colors and assign them to the series one by one?