I do not like this interface, IMO it is not obvious to new users (ie. me ) and needs extra code for functionality that could be a single line (like retrieving the first selected item). I appreciate this gives more flexibility but some additional member functions with obvious names would make this control easier to use.
Actually, I am thinking about improving since my reply in this thread....
Maybe it could be as simple as returning true for IsSelected when items has cursor (return item.sel || iteminde == cursor).