2013-11-27 4 views
7

Sto cercando di iniziare con lo sviluppo di app C#. Ho esperienza nelle tecnologie basate sul web ma sto appena iniziando con desktop/MVVM.Utilizzo di interfacce utente non standard con mvvmcross? (databindings per cose come gtksharp)

Ho guardato e letto su vari tutorial mvvmcross, e non vedo l'ora di lavorare su un'applicazione che usa il framework, ma ho solo una breve domanda che potrebbe avere più a che fare con i databindings rispetto a mvvmcross stesso:

Se si crea il mio application.core tramite la libreria mvvmcross, sarebbe relativamente facile riutilizzare quella libreria principale per sviluppare le UI per i target non-mvvmcross?

Capisco che mvvmcross semplifica un sacco di logica di visualizzazione, in modo da facendo questo avrei dovuto scrivere il codice fino a connettersi con altre GUI utilizzando i loro metodi, ma mi chiedo se qualcuno può commentare

a) se sarebbe possibile

e

b) Se sarebbe possibile senza un sacco di soluzioni alternative/incisione intorno alla mia implementazione nucleo mvvmcross.

Il mio caso di utilizzo è che ho intenzione di utilizzare mvvmcross per lo sviluppo per WPF o WinStore, quindi, se c'è domanda, aggiungere un'interfaccia utente Mac. Ma alla fine, se la domanda è presente, voglio essere in grado di portare la mia applicazione su Linux (probabilmente attraverso gtksharp, perché sembra che sia la più avanzata nello sviluppo in questo momento). Il mio progetto application.gtk sarebbe in grado di chiamare/lavorare facilmente con le classi, i metodi e le funzioni definiti nell'applicazione core di mvvmcross, o la logica deve essere riscritta per gestire i dati in un modo più adatto a gtksharp?

Grazie.

+0

Sarei interessato se tu scoprissi qualcosa di più, sto solo ricercando un progetto simile –

+0

No, non sono arrivato da nessuna parte dopo questa domanda. La vita si è impegnata tanto che il progetto è stato tristemente abbandonato. Buona fortuna per quello su cui stai lavorando. – dkisselev

+0

Sarei davvero curioso di dare un'occhiata a questo, dal momento che consente di aggiungere Mac e Linux all'elenco delle piattaforme, il che significa che copre quasi tutti i sistemi operativi. Forse sarebbe più facile con MvvmLight. Immagino che la parte più complicata sarebbe quella di portare il codice dipendente dalla piattaforma quando si tratta di associare eventi per visualizzare le proprietà. (Spero) il resto è un codice portatile. –

risposta

0

Normalmente quando si sviluppa il core con MvvmCross (ma in realtà qualsiasi modello Mvvm che utilizza lo stile di sviluppo), il Core non deve dipendere da alcuna logica dell'interfaccia utente e pertanto dovrebbe essere riutilizzabile su qualsiasi piattaforma. Tuttavia al momento non esiste il supporto di piattaforma per gtk in MvvmCross.

Non ho molta familiarità con gtk, ma suppongo che sia possibile creare il livello di binding per linux in un modo simile a quello per Android e iOS.

Quindi in teoria si dovrebbe essere in grado di riutilizzare le librerie Core anche su Linux usando Mono, dato che tale strato vincolante per Linux sarebbe stato sviluppato per MvvmCross. Sarei interessato a vedere qualcuno iniziare a curiosare se questo è effettivamente possibile.

0

Ci scusiamo per la risposta super-tardiva, ma non penso che sia davvero fattibile, almeno come affermato. Il problema principale, come vedo, è che MvvmCross dovrebbe ancora essere una dipendenza per la maggior parte delle tue librerie principali. Si potrebbe certamente avere una libreria di base con quella come dipendenza e semplicemente non usarla veramente, ma questo sembra uno spreco e va contro la domanda come richiesto.

Senza di esso come dipendenza, si perdono un sacco di cose, davvero tutte le cose che lo rendono un buon quadro. Quello che vorresti veramente fare è implementare solo INotifyPropertyChanged e risolverlo. Alcune altre librerie più semplici che potresti essere in grado di utilizzare includono la libreria Bind di Praeclarum (https://github.com/praeclarum/Bind), Fody.PropertyChanged (https://github.com/Fody/PropertyChanged), Json.NET e SqLite.NET per ottenere una libreria di base ma potente che può essere aggiunta a con una libreria basata su MvvmCross, ma non so se ci sarebbe una ragione per farlo. Un altro collegamento utile potrebbe essere: http://arteksoftware.com/end-to-end-mvvm-with-xamarin/.