Not an easy answer.  The conclusion I have come to is that the UI most always be rewritten for each platform.  One goal that I have when writing an application is that it offers the best UI experience possible.  At least so far, any cross platform UI is going to diminish the user&#39;s experience with your application, which makes your application look inferior.  Separate the logic as much as possible, but use native UI tools to develop the UI.<br>
<br>Thanks to mono we have the ability to reuse large portions of the library.  To me implementing the UI in native tools and recompiling is trivial compared to the cost of writing in C, C++, Objective-C or using a non-standard cross-platform GUI toolkit.<br>
<br>Bset of luck.<br>Duane<br><br><div class="gmail_quote">On Wed, Oct 14, 2009 at 6:49 AM, Andrew Brehm <span dir="ltr">&lt;<a href="mailto:ajbrehm@gmail.com">ajbrehm@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
I have been working with Delphi Prism for a while now and can recommend it to<br>
anyone who wants to do Mac development in .NET. Any criticism below is not<br>
to be understood as criticism of Delphi Prism. It&#39;s just the tool I use<br>
because I think it is the best for the job.<br>
<br>
Between Windows Forms, Windows Presentation Foundation (WPF), Monobjc (Cocoa<br>
bindings), and Gtk# we have ample GUI toolkits to choose from, but this also<br>
means that the ability of .NET/Mono binaries to run unchanged on any<br>
platform is somewhat diminished, to say the least. I found that Mono&#39;s<br>
implementation of Windows Forms on Mac OS and Linux does not support<br>
right-to-left text. I haven&#39;t checked with Gtk#. (In fact I have never<br>
really looked at Gtk#.)<br>
<br>
So currently the best solution for cross-platform .NET development is to<br>
create separate binaries for each platform which, as I said, diminished the<br>
advantage of being able to run the same binary on any target platform.<br>
<br>
One year ago I managed to create a test program that would check whether<br>
it&#39;s running on Windows or Mac OS and then use a Windows Forms or a Cocoa#<br>
(back then) GUI depending on the result. A single binary worked on both<br>
systems again, with decent results on both targets too. But this<br>
configuration is not easily supported by IDEs or build scripts and doesn&#39;t<br>
play well with Apple&#39;s (excellent) concept of bundles.<br>
<br>
But then even checking which OS one is running on is difficult since Mono<br>
reports UNIX when running on Mac OS (at least it did the last time I<br>
checked).<br>
<br>
How is the Gtk# implementation on Mac OS? Is it better than Windows Forms?<br>
Would Gtk# be a good solution for a single binary for all three targets? (On<br>
Windows, can I just include Gtk# DLLs or does the user have to install Mono<br>
or Gtk# himself?)<br>
<br>
I like Monobjc and the Cocoa GUI it makes available to .NET programs. But<br>
porting the GUI part of an app to Monobjc is (doable but) an effort that<br>
seems ironic considering .NET/Mono is inherently a cross-platform<br>
development environment.<br>
<br>
So what&#39;s the best way to go for cross-platform apps? Three separate GUIs?<br>
Gtk# for all? And if the first, should it be a single binary checking the OS<br>
and then using the right GUI or should it be separate binaries?<br>
<font color="#888888">--<br>
View this message in context: <a href="http://www.nabble.com/General-cross-platform-issues-and-considerations-tp25888867p25888867.html" target="_blank">http://www.nabble.com/General-cross-platform-issues-and-considerations-tp25888867p25888867.html</a><br>

Sent from the Mono - OSX mailing list archive at Nabble.com.<br>
<br>
_______________________________________________<br>
Mono-osx mailing list<br>
<a href="mailto:Mono-osx@lists.ximian.com">Mono-osx@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-osx" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-osx</a><br>
</font></blockquote></div><br>