public static void OnlyExistingItemsAreSelected <TOwner, TTarget, TSource, TVM>( this ValidatorBuilder < TOwner, TTarget, MultiSelectionVMDescriptor <TSource, TVM> > builder, string errorMessage = null, object details = null ) where TTarget : IViewModel <MultiSelectionVMDescriptor <TSource, TVM> > where TOwner : IViewModel where TVM : IViewModel, IHasSourceObject <TSource> { errorMessage = errorMessage ?? Localized.SelectedItemsNotInSourceItems; builder.CheckCollection(x => x.SelectedItems).Custom(args => { var selectionVM = args.Items.OwnerVM; foreach (TVM selectedItem in args.Items) { if (!SelectionHelpers.IsItemContainedInAllSourceItems(selectionVM, selectedItem.Source)) { args.AddError(selectedItem, errorMessage, details); } } }); }