[WPF] Ancora sul data binding two way

Prometto (e potrei essere vestito da marinaio...) che è l'ultimo post sull'argomento, ma googlando ho trovato nuova legna da mettere al fuoco.

Nei miei post precedenti

ho dato la mia opinione sul comportamento di WPF quando gestisce un binding two way tra una TextBox e la proprietà di una classe, in una particolare situazione (che non torno a descrivere visto che ci ho fatto sopra ben tre post!).

LudovicoVan mi ha "vivisezionato" e fatto letteralmente a pezzi (non fraintendetemi, lo ha fatto con cognizione di causa e in modo assolutamente lecito, non ho sofferto per nulla!) e io mi sono alfine arreso.

Ma ieri, googlando su binding e INotifyPropertyChanged (per un altro motivo, di cui tratta il mio prossimo post) mi sono imbattuto su un thread di discussione e un post che mi danno in parte ragione, e siccome sono arrendevole ma anche cocciuto (strano miscuglio), ve li cito:

Il thread è contenuto nel forum ufficiale di Microsoft, ed è interessante la risposta data da Sam Bent (MSFT dev lead for data binding) di cui riporto la prima parte: "I'm afraid we cannot change this behavior - it would be a breaking change (meaning it could break existing apps). [...]".

Il post è di Rockford Lhotka e spiega come risolvere il problema in modo molto elegante, mediante l'uso di un IdentityConverter (un IValueConverter che non fa nessuna conversione, restituendo il medesimo valore passato).

La mia personale opinione si trova a metà tra la posizione di LudovicoVan che considera la questione del tutto irrilevante e quella delle fonti citate, che lo trattano come un vero e proprio bug, come descritto nel mio terzo post.

Larga è la foglia, stretta è la via, dite la vostra che io ho detto la mia!

posted @ sabato 22 novembre 2008 22.11

Print

Comments on this entry:

# re: [WPF] Ancora sul data binding two way

Left by LudovicoVan at 23/11/2008 7.41
Gravatar
A furor di popolo?

L'intervento di Bent saggiamente salva capre e cavoli. Ma il post di Lhotka e' veramente ridicolo:

> I believe this is the same "optimization" as in Windows Forms, where the assumption is that since the value was put into the object by data binding that it can’t be different from what's on the screen - so no refresh is needed.

Poor boy.

> Obviously that is a unfortunate viewpoint, as it totally ignores the idea than an object might be used to centralize business logic or behavior...

Sure, perche' noi facciamo sempre il two-way data-binding direttamente ai business objects, don't we?

Ma dai...

Temo che il mio punto di vista resti che il problema non si pone.

-LV
Comments have been closed on this topic.