Wenn Du Code für Windows Phone 7 schreiben willst bist Du wahrscheinlich primär mit Silverlight unterwegs. Guck Dir da mal das
Composite Application Guidance for WPF and Silverlight an (um die Verwirrung komplett zu machen: Microsoft nennt das ganze "Prism"
).
Das geht in Richtung MVC für Silverlight, beinhaltet aber drumrum noch ein paar andere Patterns und Best Practices.
Echtes Codesharing zwischen .NET und Java ist mit Oxygene dennoch mindestens problematisch, da Du in 90% der Fälle irgendwelche Klassen aus der Java Runtime vs. Klassen aus der .NET BCL verwenden wirst, die es in der jweils anderen Plattform nicht gibt. Allein die List<T> in .NET, die das IList<T> Interface implementiert sieht auf Java-Seite so aus, dass Du hier ein Interface List<T> hast, welches u.a. von ArrayList<T> implementiert wird. Das heisst schon hier hast Du Unterschiede die Du mittels Compiler-Direktiven ausgleichen müsstest.
Alleine mein kleines Beispiel auf den Delphi Tagen dazu sollte deutlich gemacht haben, wie sehr man da mit IFDEF's um sich schmeissen muss.