Para crear una pantalla o página (voy a usar ambos términos intercambiablemente) desde el código solo debes seguir estos cuatro pasos:
- Crea una clase como quieras que se llame tu pantalla, por convención debe terminar con Page en el nombre.
- Haz que esa clase herede del tipo de página que quieras crear. El tipo más básico de página es el ContentPage. Si quieres ver los otros tipos puedes leer más aquí.
- En el constructor de la clase de tu página, instancia los objetos de los controles o vistas que quieras que tenga adentro. Si ya estás familiarizado con XAML del lado del código las clases de los controles se llaman igual que sus etiquetas.
- Asigna estos controles a la propiedad Content o Children según el tipo de página que quieras mostrar
Luego de seguir esos pasos tendrás una página lista para mostrar. Para mostrar la página tienes varias opciones:
- En el constructor de la clase App (en el archivo App.cs o App.xaml.cs) asígna la propiedad MainPage con el valor de una instancia de la página que quieras mostrar
- Sí quieres mostrarla haciendo uso de la barra de navegación puedes asignar a la propiedad MainPage una instancia de NavigationPage y pasarle tu página como parámetro. La barra superior mostrará la propiedad Title de tu página.
El código quedaría algo así:
La estructura de tu proyecto:

Algunas cosas que tomar en cuenta:
- La propiedad MainPage de la clase App define la página que se va a mostrar primero cuando se lance la aplicación, puede ser cualquier objeto que herede de la clase Page o en otras palabras cualquier tipo de página.
- Cuando trabajas en XAML si miras el codebehind de tu vista o pantalla notarás el método InitializeComponent() en el constructor. Este método crea todos los objetos que definimos en el XAML osea que al final, Xamarin.Forms crea la vista en código cuando trabajamos con XAML, solo que lo hace detrás de cámara.
- El código no es más rápido por hacer las vistas en XAML o con puro C#.
- Sí tienes que referenciar un control desde el codebehind de un XAML lo puedes hacer asignadole la propiedad x:Name al control y referenciandolo por el mismo.
- Solo recomendaría usar este método si necesitas generar dinámicamente la interfaz del usuario y aún así en casos bastante específcios.