Използване на нестандартен потребителски интерфейс с mvvmcross? (свързване на данни за неща като gtksharp)

Търся да започна с разработката на приложения на C#. Имам опит в уеб-базираните технологии, но тепърва започвам с desktop/MVVM.

Гледах и четох различни уроци за mvvmcross и наистина очаквам с нетърпение да работя върху приложение, използващо рамката, но имам един бърз въпрос, който може да има повече общо със свързването на данни, отколкото със самия mvvmcross:

Ако създам моето application.core чрез библиотеката mvvmcross, ще бъде ли сравнително лесно да използвам повторно тази основна библиотека за разработване на UI за цели, които не са mvvmcross?

Разбирам, че mvvmcross опростява МНОГО от логиката на дисплея, така че като направя това, ще трябва да напиша код, за да се свържа с други guis, използвайки техните методи, но се чудя дали някой може да коментира

а) Дали би било възможно

и

b) Ако би било възможно без много заобикалящи решения/хакване около моята основна реализация на mvvmcross.

Моят случай на употреба е, че планирам да използвам mvvmcross за разработка първо за WPF или WinStore, а след това, ако има търсене, да добавя Mac UI. Но в крайна сметка, ако има търсене, искам да мога да пренеса приложението си и към 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 модел, използващ стил на разработка) Ядрото не трябва да зависи от никаква UI логика и следователно трябва да може да се използва повторно на всяка платформа. В момента обаче няма поддръжка на платформа за gtk в MvvmCross.

Не съм много запознат с gtk, но предполагам, че е възможно да се изгради обвързващият слой за linux по подобен начин, както беше направено за Android и iOS.

Така че на теория трябва да можете да използвате повторно Core библиотеките на Linux, както и с помощта на Mono, като се има предвид, че такъв свързващ слой за Linux ще бъде разработен за MvvmCross. Ще ми е интересно да видя някой да започне да се рови дали това наистина е възможно.

person Stephanvs    schedule 28.09.2015