Trovare gli errori di binding in WPF e generare un’eccezione

Tip veloce che può fare risparmiare parecchio tempo.

Quando si effettua il binding in WPF è molto facile commettere errori di battitura (sempre che non si usi il designer o Blend) oppure è possibile modificare o eliminare la property nel ViewModel senza aggiornare lo XAML.

Ad esempio se credo un binding sbagliando la sintassi della property Description nel Path:

<GridViewColumn DisplayMemberBinding="{Binding Path=Descrition}" Header="Last name" Width="140" />

a runtime non viene visualizzato nulla ma soprattutto non viene sollevata nessuna eccezione.

Il metodo più veloce per visualizzare gli errori di binding è quello di eseguire l’applicazione in debug da Visual Studio: in questo modo tutti gli errori di binding vengono loggati nella finestra di Output.

Nell’esempio mi ritrovo un errore di questo tipo:

System.Windows.Data Error: 40 : BindingExpression path error: ‘Descrition’ property not found on ‘object’ ”Product’ (HashCode=55303339)’. BindingExpression:Path=Descrition; DataItem=’Product’ (HashCode=55303339); target element is ‘TextBlock’ (Name=”); target property is ‘Text’ (type ‘String’)

A questo punto potrebbe essere utile loggare questi errori sotto forma di eccezione anche a runtime (magari con Log4net).

In questo post viene spiegato come creare un listener sui binding di WPF per generare un’eccezione: Making WPF Binding Errors Exceptions

Share