What I was hoping I could do, was make a new class PopUpBase that extended from ContentView and implemented some of the functionality for these views, then extend that. I'm not sure how to refer to it though, trying it like this compiles but crashes when the view is displayed:

I hate seeing UI created in code. XAML is not inheritable, but the class code (Csharp code behind is) - so people tend to jump on this direction and its just not a good practice.

Instead the XAML that you want to repeat in all your UI should be done in a ControlTemplate. If you also want to inherit from a base class so you have inherited functionality (methods not UI) you can do that as well.

I do this with my own PopupBase because I like having an auto-dismiss timer; so that is defined in the base class. But the common layout of Caption, body, ButtonGroup is all part of the ControlTempalte. Then I can derive from the base, set the XAML content as the ControlTemplate, do a couple bindings for the data... done.