Right, got it sorted. I kept trying to cast it like
IList<PuzzleViewModel> collection = (IList<PuzzleViewModel>)param;
Which told me it couldn’t convert from SelectedItemCollection to IList…
This is in fact what you need to do.
System.Collections.IList items = (System.Collections.IList)param;
var collection = items.Cast<PuzzleViewModel>();