public override object GetItemPropertyValue (ListItemProvider item,
int propertyId)
{
if (propertyId == AutomationElementIdentifiers.NameProperty.Id)
return listboxControl.GetItemText (item.ObjectItem);
if (ContainsItem (item) == false)
return null;
if (propertyId == AutomationElementIdentifiers.HasKeyboardFocusProperty.Id)
return listboxControl.Focused && item.Index == listboxControl.FocusedItem;
else if (propertyId == AutomationElementIdentifiers.BoundingRectangleProperty.Id) {
System.Drawing.Rectangle itemRec = System.Drawing.Rectangle.Empty;
System.Drawing.Rectangle rectangle = listboxControl.Bounds;
itemRec = listboxControl.GetItemRectangle (item.Index);
itemRec.X += rectangle.X;
itemRec.Y += rectangle.Y;
if (listboxControl.FindForm () == listboxControl.Parent)
itemRec = listboxControl.TopLevelControl.RectangleToScreen (itemRec);
else
itemRec = listboxControl.Parent.RectangleToScreen (itemRec);
return Helper.RectangleToRect (itemRec);
} else if (propertyId == AutomationElementIdentifiers.IsOffscreenProperty.Id)
return Helper.IsListItemOffScreen ((Rect) item.GetPropertyValue (AutomationElementIdentifiers.BoundingRectangleProperty.Id),
listboxControl,
false,
System.Drawing.Rectangle.Empty,
ScrollBehaviorObserver);
else
return null;
}