It seems i misunderstood your doing.
you already have the reference, you just dont use it.
See inside the first picture where you create your horizontal widget? that output pin is the reference you´ll need. (the one which you set to the add child node)
btw. your add to viewport is obsolete, since you add it to a widget which is already on screen (besides you add “nothing” to the viewport like this at all, except the widget which you are in already and which is probably already visible).
So simply create a function inside your HorizontalBox called f.e. “SetItem” with an input of your ItemClass/Struct.
Then inside your OnClicked, after create widget take the output reference and call “Set Item” give it the item from your foreach loop.
Now your Horizontal widget gets the desired data it needs and you can bind them.