Kate Middleton steals the show at London charity