protected virtual void ExecuteCommandOnItem(ICommand command, int position) { if (command == null) return; var item = Adapter.GetRawItem(position); if (item == null) return; if (!command.CanExecute(item)) return; command.Execute(item); }