Stale state is shown on newly-revealed UMG widgets

I often re-use UMG widget instances many times, hiding and showing them as needed, and setting up their contents before I show them. e.g. I have a pool of item display widgets that have icons, text etc. and I call something like:

// NextAvailableWidget is currently Collapsed, has an old icon on it.
NextAvailableWidget->Icon->SetBrushFromTexture( Icon );
NextAvailableWidget->SetVisibility( ESlateVisibility::Visible );

However the previous state of the widget is shown for 1 frame when it is revealed.

How do other people get round this? Is there a way to force a “redraw” without showing the widget?