Использование нестандартного пользовательского интерфейса с mvvmcross? (привязки данных для таких вещей, как gtksharp)

Я собираюсь начать разработку приложений на C#. У меня есть опыт работы с веб-технологиями, но я только начинаю работать с настольными/MVVM.

Я смотрел и читал различные учебные пособия по mvvmcross, и я действительно с нетерпением жду возможности поработать над приложением, использующим фреймворк, но у меня просто есть быстрый вопрос, который может иметь больше общего с привязками данных, чем сам mvvmcross:

Если я соберу свой application.core с помощью библиотеки mvvmcross, будет ли относительно легко повторно использовать эту основную библиотеку для разработки пользовательского интерфейса для целей, отличных от mvvmcross?

Я понимаю, что mvvmcross НАМНОГО упрощает логику отображения, поэтому, делая это, мне пришлось бы написать код для подключения к другим графическим интерфейсам с использованием их методов, но мне интересно, может ли кто-нибудь прокомментировать

а) Возможно ли

а также

б) Если бы это было возможно без большого количества обходных путей/хакеров вокруг моей основной реализации mvvmcross.

Мой вариант использования заключается в том, что я планирую сначала использовать mvvmcross для разработки либо для WPF, либо для WinStore, а затем, если есть спрос, добавить пользовательский интерфейс Mac. Но, в конце концов, если возникнет спрос, я хочу иметь возможность также портировать свое приложение на Linux (вероятно, через gtksharp, потому что это звучит так, как будто сейчас это самое далекое развитие). Сможет ли мой проект application.gtk легко вызывать/работать с классами, методами и функциями, которые определены в основном приложении mvvmcross, или эту логику придется переписать, чтобы обрабатывать данные таким образом, который больше подходит для gtksharp?

Спасибо.


person dkisselev    schedule 27.11.2013    source источник
comment
Мне было бы интересно, если бы вы узнали что-нибудь еще, я просто изучаю похожий проект.   -  person Scott Cowan    schedule 27.03.2014
comment
Нет, я ничего не понял после этого вопроса. Жизнь была занята, поэтому этот проект, к сожалению, был заброшен. Желаем удачи в том, над чем вы работаете.   -  person dkisselev    schedule 29.03.2014
comment
Мне было бы очень любопытно взглянуть на это, так как это позволяет добавить Mac и Linux в список платформ, что означает охват почти всех ОС. Может с MvvmLight было бы проще. Я предполагаю, что самой сложной частью будет портирование кода, зависящего от платформы, когда дело доходит до привязки событий к просмотру свойств. (надеюсь) остальное - переносимый код.   -  person Léon Pelletier    schedule 17.07.2014


Ответы (2)


Извините за очень поздний ответ, но я действительно не думаю, что это слишком осуществимо, по крайней мере, как указано. Основная проблема, на мой взгляд, заключается в том, что MvvmCross, вероятно, по-прежнему должен быть зависимостью для большинства ваших основных библиотек. Конечно, вы могли бы иметь основную библиотеку с этим в качестве зависимости и просто не использовать ее на самом деле, но это кажется пустой тратой времени и противоречит заданному вопросу.

Без него в качестве зависимости вы теряете довольно много вещей, действительно все, что делает его таким хорошим фреймворком. То, что вы действительно хотите сделать, это просто реализовать INotifyPropertyChanged и работать с этим. Некоторые другие, более простые библиотеки, которые вы можете использовать, включают библиотеку Bind от Praeclarum (https://github.com/praeclarum/Bind), Fody.PropertyChanged (https://github.com/Fody/PropertyChanged ), Json.NET и SqLite.NET, чтобы получить базовую, но мощную основную библиотеку, которую затем можно добавить с помощью библиотеки на основе MvvmCross, но я не знаю, есть ли вообще какая-то причина для этого. Еще одна полезная ссылка: http://arteksoftware.com/end-to-end-mvvm-with-xamarin/.

person WolfgangSenff    schedule 06.04.2016

Обычно при разработке ядра с помощью MvvmCross (но на самом деле любого шаблона Mvvm, использующего стиль разработки) ядро ​​не должно зависеть от какой-либо логики пользовательского интерфейса и, следовательно, должно повторно использоваться на любой платформе. Однако в настоящее время в MvvmCross нет поддержки платформы для gtk.

Я не совсем знаком с gtk, но полагаю, что можно построить слой привязки для linux аналогично тому, как это было сделано для Android и iOS.

Таким образом, теоретически вы должны иметь возможность повторно использовать библиотеки Core в Linux, используя Mono, учитывая, что такой уровень привязки для Linux будет разработан для MvvmCross. Мне было бы интересно посмотреть, как кто-нибудь начнет ковыряться, если это действительно возможно.

person Stephanvs    schedule 28.09.2015