I don lo so per certo, ma ho il sospetto che sia perché non c'è nessun luogo dove gestire l'eccezione.
Supponiamo di avere qualcosa a cui si desidera associare le proprietà, ma a volte qualcosa è nullo. (Ad esempio, {Binding Name.Length}
, dove Nome è una proprietà stringa che potrebbe essere nullo.) In questo caso sei contento che questo sia un no-op, perché sai che il controllo non verrà mai mostrato quando il Nome è nullo (dovuto a un trigger dire) o perché sai che questa sarà una condizione transitoria mentre la fonte di binding sta caricando i suoi dati.
Supponiamo ora che WPF abbia propagato la NullReferenceException durante il tentativo di chiamare Length sulla stringa Nome null. Nel codice procedurale, prenderesti questa eccezione e la inghiottire perché sapevi che era benigno. Ma non è possibile inserire un gestore di eccezioni attorno al codice di binding WPF. Viene chiamato da qualche parte in profondità all'interno di WPF. Quindi l'eccezione dovrebbe arrivare fino a Application.Run, che non è un posto molto utile per catturarlo.
Quindi piuttosto che farvi centralizzare i gestori di eccezioni di binding fino in Application.Run, penso che i membri del WPF abbiano deciso di ingoiare le eccezioni da soli. Solo una teoria però ...
Dupe: http://stackoverflow.com/questions/978887/why- does-wpf-databinding-swallow-exceptions –
Non un dupe. Questa domanda riguarda il perché, la domanda collegata riguarda cosa fare al riguardo. –
La prima risposta nella domanda collegata spiega cosa fare al riguardo. Fonti di tracciamento personalizzato ftw. –