Conflict between 16x2LCD and I/o expansion shields

I'm undeniably a newbie here and have been tinkering with a duinotech xc4410 mainboard and a couple of shields: The duinotech 16x2 LCD and the I/O expansion shield based around the MCP23017.

On their own, each seems to behave the way I expected (though the documentation for the I/O expansion module is pretty awful). However, when I stack them so I can access extra ports AND use the LCD, the buttons on the LCD shield don't do anything any more. (I also had to use ribbon cables because the LCD covers up the new ports - but that's a different/minor issue.

It's not a software issue because even just adding in the expansion shield without making any changes to the code for the LCD demonstrates the problem.

I can use the additional expansion ports and wire in switches to do what I want (I was planning on doing that anyway), but I'd be interested to hear WHY the onboard switches no longer function.

Any insights would be appreciated.