Diamond Marshall, six, who was diagnosed with an abdominal tumour in February, threw herself into Kate's arms as she arrived at Calgary Airport.
The little girl had been due to simply present Kate with a bouquet, but was so overcome at meeting her that she rushed forward and flung her arms around her.
Her step-mother Danielle, 32, said it was a 'dream come true' for Diamond, who had always 'dreamed of meeting a princess'. She said Kate was 'lovely and gracious' towards Diamond, who has undergone gruelling chemotherapy and radiotherapy and is currently awaiting surgery.
The Duchess was visibly moved by Diamond, and returned her cuddles.
Diamond had been given the chance to meet Kate through the Canadian charity 'Children's Wish' - she had written from her hospital bed asking to meet a 'princess' after watching the royal wedding on television.
Her dad Lyall, 32, said Kate was 'as fancy' in real life 'as she looks on the TV'.