Кросс-платформенные альтернативы WPF

все, я думаю о переносе моего приложения из VB.net к МОНОПРОЕКТУ на основе C#, поэтому он может работать как на Windows, так и на Mac. Тем не менее, мне нужна альтернатива WPF для Mac. Он должен иметь очень похожую функциональность. QML (по QT) не является жизнеспособным вариантом, так как он стоит слишком много денег для нас.

4 ответов


Мигель де Икаса рекомендует MonoMac в качестве замены WPF для Mac, как указано здесь. Как он объясняет, нет плана по внедрению WPF в mono.

MonoMac-это незавершенное производство. Некоторые части какао-Апис еще не завернуты. Вы должны начать с образцы чтобы получить представление о том, что это возможно.

вам придется построить два разных интерфейса поверх общего движка, но это, как правило, хорошо разделение забот.

существует также возможная общая база кода для UI с GTK#.


существует также https://github.com/AvaloniaUI/Avalonia Мультиплатформенная платформа .NET UI framework, вдохновленная WPF


в зависимости от функциональности вашего приложения вы можете потенциально перенести свое приложение в Silverlight/Moonlight. Silverlight поддерживается на MAC, но вам понадобится Мунлайт для Linux. Конечно, если вы много работаете с файловой системой клиентской машины или нет, это не вариант.


tho я принял ответ некоторое время назад, я хочу опубликовать то, что я делаю в настоящее время, если кто-то рассматривает этот вопрос.

в настоящее время я использую Python с PyGTK для GUI и GStreamer для видео. Это дает результаты, почти идентичные WPF (за исключением некоторых жестко закодированных анимаций). Кроме того, он работает на Windows, Mac и Linux.

EDIT: GStreamer не сработал для моих целей. Пока он работает хорошо, по большей части, я не мог слой прозрачный .формат PNG изображения на видео. Я наконец переключился на Adobe Flash (Adobe AIR).

EDIT 2: для тех, кто столкнется с этим позже, когда будущее SWF стало под вопросом, моя компания начала создавать нашу собственную систему анимации на C++, используя некоторые компоненты Gtk+/gtkmm и Cairo. В конечном счете, это подпадает под совет другого ответа...отделить GUI от платформы.