Poiché le interfacce utente in genere richiedono stringhe localizzate, i miei modelli di visualizzazione forniscono tutte le stringhe consumate dalle visualizzazioni. Questo include cose come i titoli sui pulsanti.Legature fluide e titoli UIButton
sul lato iOS, i titoli dei pulsanti sono impostati tramite il metodo SetTitle.
Per ottenere un modello di vista stringa => la mappatura del titolo pulsante per funzionare, MvvmCross esegue una traduzione di rilegatura magica per farlo funzionare correttamente.
dire che ho un UIButton di nome Foo nella mia vista e voglio mappare il suo titolo a una proprietà ButtonLabel nel mio View Model. Nel conoscere i seguenti lavori, al fine di istituire un tale legame:
this.AddBindings(new Dictionary<object, string>() {
{Foo, "Title ButtonTitle"}
});
Può questo stesso legame essere impostato utilizzando il sistema di rilegatura Fluente in MvvmCross? Sto leggendo la fonte MvvmCross e non sto ottenendo abbastanza il codice vincolante.
Questo seguente non funziona (perché in realtà il pulsante non ha una proprietà Title - ha un metodo di SetTitle):
var set = this.CreateBindingSet<FooView, FooViewModel>();
set.Bind(Foo).For(b => b.Title).To(vm => vm.ButtonTitle);
set.Apply();
C'è un altro modo per ottenere il risultato desiderato utilizzando Fluent Associazioni?
Per le stringhe localizzate, si potrebbe anche prendere in considerazione la funzionalità di associazione linguistica localizzata: consultare https: // speakerdeck.com/cirrious/internationalization-in-mvvmcross e http://slodge.blogspot.co.uk/2013/05/n21-internationalisation-i18n-n1-days.html – Stuart
Questo è fantastico. Hai risposto alla mia domanda e a molti altri che ho avuto senza nemmeno chiederlo. – Frank
Stuart ha anche detto: "se guardi [questo link] (https://github.com/slodge/MvvmCross-Tutorials/blob/master/CustomBinding/CustomBinding.Droid/Setup.cs) vedrai come aggiungere una proprietà di associazione 'SpecialProperty' e una proprietà di collegamento 'HitThis' al sistema " – Frank