In this article, I want to share an overview of custom pages in Model-driven apps and the differences with canvas applications.
At first look, they are similar. But start working with real tasks and you quickly notice limitations and stand-out features.
For example, you are not supposed to create more screens or add Power BI tiles to a custom page. The canvas app can have multiple screens, but a custom page can have one screen by default, as it is not a standalone application but a part of a bigger app.
Still, you can enable multiple screens or call a custom page from another custom page. To do so, use Navigate function:
Navigate(CustomPageDisplayName)
You can also navigate to a default view of a table, to a specific system view, to default or specific system form in edit or create mode. To close the current custom page, use Back() function.
Another useful function is Notify(), for example, for validation purposes. The notification message will be on top of the custom page. You can set up the notification type – Success, Information, Warning and Error. Learn more about PowerFx functions in custom pages.
There is a noticeable limitation when talking about the input controls. Not all are available and some have different settings.
There is no Format setting for Text box control, which is Text input in canvas apps.
But you can apply a custom validation with the help of PowerFx functions:
Set up the OnChange property:
If(txtNumOfProd.Value <> "" And Value(txtNumOfProd.Value) <> RoundDown(Value(txtNumOfProd.Value),0), Notify("Wrong number of products"); Reset(txtNumOfProd) )
Here I have used also the Notify function that will show the message on the page if the value is incorrect and reset the value:
Learn more about known issues and limitations in the documentation.
It is recommended to use custom pages instead of embedded canvas applications for better performance. Navigate to the link to learn how to migrate the canvas app to a custom page. Enable custom controls on custom pages.
Learn how to build a responsive design in Custom pages here.