También estoy haciendo un desarrollo multiplataforma usando mono y como tú y muchos otros enfrentan el problema de qué hacer con respecto a la interfaz de usuario y otra integración de hardware subyacente.
Decidí que no quería estar a merced de otro marco de terceros (el mono es suficiente) y busqué una solución que pudiera construir y mantener. El nuevo patrón de MVVM junto con Expression Blend es genial, pero pronto te encuentras estancado cuando se trata del desarrollo de plataforma cruzada. Los patrones de MVC an MVP tampoco parecían satisfacer lo que necesitaba. Finalmente se decidió por el patrón PM y lo expandió a un PMH donde el H es para hardware. Para lograr lo que necesitaba, tuve que abstraer los widgets fundamentales (botones, paneles, cuadros de texto) en una capa de plataforma subyacente para cada tipo de dispositivo. Mi capa de plataforma representa alrededor del 1% de mi base de código y me permite proteger la aplicación para cada dispositivo al que me dirijo.
Para mi solución WP7, casi no utilizo HTML alrededor de 25 líneas, lo cual es suficiente para inicializar la aplicación y la página principal. El resto de la interfaz de usuario se organiza programáticamente de la misma manera que lo haría en WinForms. En WP7 sigo haciendo uso del control Pivot, ya que es bastante groovy y estoy modelando un control similar para Android/iPhone. Si bien no será 100% el mismo, será muy similar y aún usará el mismo motor de navegación dentro de mi código central.
Aún no estoy completo con mi desarrollo, pero hasta ahora estoy muy contento con mi progreso. He estado desarrollando la interfaz de usuario para la aplicación de Windows durante unos 20 años y nunca uso las herramientas de creación de interfaz, ya que nunca me dan lo que quiero y realmente pierdo el tiempo (aunque la mezcla es genial) y también crean una tremenda obstrucción del código especialmente en Blend.