UMG dynamic material has to be updated every tick?

I’ve got a custom widget that has an image with a dynamic material. The image and the dynamic material work fine, and I have an event that fires when the underlying value (an integer) changes, so the image can update by setting a scalar parameter in its dynamic material.

The problem is, the event fires, the scalar parameter gets set, but the image never changes from the starting value. If I set it to frame 2 in the construct, it stays on frame 2 forever. If it’s 0, it stays 0 forever.

So reading the docs, I added an OnTick event that simply sets the scalar parameter every tick. This causes things to work.

Now, if this is the way it has to be, that’s fine if crappy. However, another programmer in our project has a dynamic material that doesn’t have this behaviour - he changes his scalar when it should be changed, not every tick.

So, questions:

Do scalar parameters have to be set every tick for dynamic materials?
If not, how do I debug the issue above? I don’t want to set parameters every tick.