Zajmuję się również programowaniem na różnych platformach przy użyciu mono i podobnie jak ty i wielu innych osób, które napotykają problem związany z interfejsem użytkownika i innymi związanymi z nim integracjami sprzętowymi.
Zdecydowałem, że nie chcę być na łasce innego schematu trzeciej strony (mono wystarcza) i szukałem rozwiązania, które mógłbym zbudować i utrzymać. Nowy wzorzec MVVM wraz z Expression Blend jest naprawdę fajny, ale wkrótce utkniesz, jeśli chodzi o tworzenie różnych platform. Modele MVC an MVP również nie pasowały do tego, czego potrzebowałem. Ostatecznie ustalono wzór PM i rozwinięto go do PMH, gdzie H dotyczy sprzętu. Aby osiągnąć to, czego potrzebowałem, musiałem wyodrębnić podstawowe widgety (przyciski, panele, pola tekstowe) do warstwy platformy bazowej dla każdego typu urządzenia. Moja warstwa platformy stanowi około 1% mojej bazy kodu i pozwala mi przeskalować aplikację dla każdego urządzenia, na które kieruje.
Do mojego rozwiązania WP7 używam prawie żadnego HTML tylko około 25 linii, co wystarcza do zainicjowania aplikacji i strony głównej. Reszta interfejsu użytkownika jest programowana tak jak w WinForm. Na WP7 nadal używam formantu Pivot, ponieważ jest naprawdę świetny i modeluję podobne sterowanie do użytku na Androidzie/iPhonie. Chociaż nie będzie w 100% taki sam, będzie bardzo podobny i nadal będzie korzystać z tego samego silnika nawigacyjnego w moim kluczowym kodzie.
Nie jestem jeszcze gotowy, ale jak na razie jestem bardzo zadowolony z mojego postępu. Rozwijam interfejs użytkownika dla aplikacji Windows od około 20 lat i nigdy nie używam narzędzi do budowania interfejsu, ponieważ uważam, że nigdy nie dają mi tego, czego chcę i naprawdę marnuję mój czas (Blend jest całkiem fajny), a także powodują ogromne nadpisanie kodu szczególnie w Blend.