Hi,
can someone help?
i have a stacked chart, and i have a problem when trying to implement the tooltip... in this line:
string seriesKey = itemlist.Keys.GetValue(0).ToString(); double pointValue = ((IGCategoryPoint)itemlist.ValueForKey (new NSString (seriesKey))).Value; <<<<==== This line give me this error:
Unable to cast object of type 'MonoTouch.Foundation.NSMutableDictionary' to type 'Infragistics.IGCategoryPoint'.
thanks
the code:
public class MyChartViewDelegate :IGChartViewDelegate { public override string ResolveLabelForAxis (IGChartView chartView, IGAxis axis, NSObject item) { if (axis is IGCategoryXAxis) { NSMutableDictionary dm = (NSMutableDictionary)item; return ((NSString)dm["label"]).ToString(); } if (axis is IGNumericYAxis) { return (item.ToString()); } return string.Empty; } public override UIView ResolveTooltipView (IGChartView chartView, NSDictionary itemlist) { UIView tooltip = new UIView(new RectangleF(0, 0, 100, 30)); tooltip.BackgroundColor = UIColor.LightGray; if (itemlist.Count > 0) { string seriesKey = itemlist.Keys.GetValue(0).ToString(); double pointValue = ((IGCategoryPoint)itemlist.ValueForKey (new NSString (seriesKey))).Value; UILabel valueLabel = new UILabel(); valueLabel.BackgroundColor = UIColor.Clear; valueLabel.Text = String.Format("${0:0.00}", pointValue); valueLabel.SizeToFit(); valueLabel.Frame = new RectangleF(5, 5, valueLabel.Frame.Size.Width, valueLabel.Frame.Size.Height); tooltip.AddSubview(valueLabel); } return tooltip; } }
The stacked charts have a slightly different itemlist passed down to ResolveTooltipView. Typically, for non-stacked charts, the itemlist contains an IGDataPoint, but stacked charts have an extra level of depth, so the itemlist is a dictionary of dictionaries. The inner dictionary represents the stacked fragments in a stacked series. In your sample code, after you get the seriesKey, you would get the inner stack dictionary:NSDictionary stack = itemList.ValueForKey(seriesKey);stack will be a dictionary of series fragment keys and their respective values. For example, if you created a stack series with fields {"value1", "value2"}you would use stack.ValueForKey("value1") to get the value for the first fragment, etc.
Hope this helps you.
Tanja for your help! It's Working!