How to force a DataLoader to only fire on manual call of its .load() method?

I have a DataLoader on a screen, that loads a list of DTOs, that are then displayed in a table on a tab of the screen. It’s not terribly fast so I want it to only fire when I manually call its .load() method - and I can’t figure out how to make that happen. I’ve tried using an empty refresh element for it in the DataLoadCoordinator, thinking that would kill off any automatic triggering, but that doesn’t work.

Any ideas?

In this case, I don’t define the loader in the handle.
I just make a method in the controller to load the data and put it in the DTO container.
Then I can call a download from anywhere in my code.

The default <DataLoaderCoordinator auto="true"/> will trigger all loaders registered in XML on BeforeShow event.

If you want a loader to be triggered manually, you have to switch to manual configuration of DataLoaderCoordinator for all other loaders:

<dataLoadCoordinator>
    <refresh loader="fooDl"> <!-- automatically triggered on BeforeShow -->
        <onScreenEvent type="BeforeShow"/>
    </refresh>
</dataLoadCoordinator>
barDl.load(); // manually triggered in controller

See DataLoadCoordinator :: Jmix Documentation

I had been hoping that in the “Semi-automatic mode” that is detailed in the docs there would be a way to force a DL into “full manual mode” somehow. Something like a

<refresh loader="someDl">
  <onlyOnMnaualCall />
</refesh>

Or similar. I’ll use @andrey_vb 's solution for now though.