You can use dynamic classes feature to dynamically apply disabled class to a button based on any condition. In the condition you can make decision based on context entity attributes just like we do in the visibility expression.
I think disabled class is available in default classes. If it does not work, try creating a custom CSS class, set that class on the button in your dynamic class expression. And in CSS code, use disabled property to disable button.
Further if you want to fake the functionality of disabled attribute with CSS, use
pointer-events:none;
For info on dynamic classes and CSS, also see this answer
https://forum.mendix.com/link/questions/104865