In ambito XAML per mostrare una lista di elementi occorre impostare il datacontext di un ItemsControl ad una IEnumerable. L’ItemsControl poi rendererizza la lista in base al DataTemplate specificato nella proprietà ItemTemplate. Per aggiungere oggetti nuovi ho sempre usato ItemTemplateSelector e/o CompositeCollection, ma la presenza di un container l’ho sempre considerata obbligatoria (correggetemi se sbaglio).
Ho considerato l’assioma valido anche in Knockout, ma non è così. Con knockout è possibile scrivere un “contenitore fittizio” tramite commenti:
<!-- ko ... -->
<!-- /ko -->
Tramite questa feature è possibile (come nel mio caso particolare) creare una tabella con un numero di colonne variabili:
<table id="classificationTable"> ...
Anche se leggermente OT rispetto al mondo .net, notifico l'uscita di Knockout v2.0.0; Per chi non sapesse cosa fosse, è un framework javascript che semplifica l'applicarazione del pattern MVVM (oramai noto in xaml) in javascript+html.
Tra le nuove caratteristiche che ho notato velocemente, cito le seguenti:
ViewModel: negli esempi ora è rappresentato da una funzione (=oggetto)
Computed properties: ko.dependentObservable è deprecato, ora è preferibile utilizzare ko.computed.
Templating: poiché jQuery.tmpl non è più in sviluppo, è stato modificato il motore di templating. Ora si può usare il binding di tipo foreach e altre tecniche. Probabilmente questa è...