a prima vista si potrebbe dire che i behavior semplicemente rendono legacy le attached properties ma in realtà fanno molto di più.
Ho sempre snobbato i behavior preferendo, senza un buon motivo se non la pigrizia, le attached properties con cui si possono ottenere esattamente gli stessi risultati.
In realtà giochicchiando con i behavior mi sono reso conto che c’è un abisso tra i 2 mondi:
  • Un behavior è una classe (e non una classe statica) e questo ha l’enorme vantaggio che a runtime ogni behavior è un’istanza diversa semplificando non di poco la gestione di scenari che con le attached properties sono come minimo un po’ ostici;
  • Quando lo startup di un behavior (OnAttached) è completato tutto il behavior è sicuramente inizializzato ergo se il behavior espone più proprietà non avete il problema, come per le attached property, di verificare che le proprietà siano inizializzate e come;
.m