Does it make any sense to hash parts of a hashing target?
From the practical point of view both approaches have similar resistance to brute-forcing. From the implementation point of view it may be simpler to apply hash only once, without hashing of every single part.
Nevertheless I would suggest you to review your design and consider other options. Suppose somebody has received your message and validation shows, that Items[0].ItemSig and Items[0].Data to not match. This can have two reasons:

Either Items[0].ItemSig was invalid before you signed it (then the signer has faked the signature).
Or the signature was correct, but you have replaced Items[0].Data before signing.
Or Items[0].Data was modified on the way from you to the receiver.

Thus it will be hard to find out where the problem has happened.
That's why I'd suggest other approach. Think of separation of concerns. Don't consider the structure of what are you signing. Sign the whole element Items. Then if somebody receives your message and something is not consistsnet, it will be easy to check: One should just check if your signature matches the Items element. If matches, means there was no modification on the way from you to the receiver, and the problem occurred on the signer of Items[0].Data before you signed.
TLDR: I'd suggest to hash the whole element Items, not the parts of it, and without hashing of every single part of it.