I have an IoTHub with a route that points to an EventHub which triggers a Functions.
I\'m having problem getting the DeviceId and other IoT Hub properties
That's the recommended way of doing this, if you need access to detailed event properties in addition to the payload. The simple/default bindings for string etc. are useful in cases where you don't need to access those event properties. Our runtime calls EventData.GetBytes() for you behind the scenes and converts the data to the input type you've specified.
I do think we could make improvements to facilitate these scenarios however. I've logged a bug here in our repo to track this.