Simples XAML führt mich zur Verzweiflung…

Wer schon mal extensiver mit XAML (WPF) zu tun gehabt hat, der weiss: Debugging von DataBinding ist nicht so ganz trivial…

Ich hatte heute einen ganz simplen Cut-n-Past Error: Habe ein Binding Expression der Form

in ein MultiBinding eingefügt… wer nun schon mal mit MultiBindings gearbeitet hat weiss, dass man dazu nicht die “Kurzform” mit den geschweiften Klammern verwendet, sonder das ganze in die “Elemente” reinschreibt… also aus dem obigen Beispiel wird dann ein


So… das sieht ja einfach aus 😉 jetzt hab ich aber beim Copy-and-Paste dummerweise die geschweifte Klammer am Ende mitkopiert… dann noch einige Zeit weitergearbeitet… und dann wollte ich starten… lies sich auch alles wunderbar compilieren…
Nach dem Start kam aber das böse Erwachen…. ich hab min. 1 Stunde gesucht (und dabei in den tiefen des .NET-Source-Codes debuggt) bis ich den Fehler gefunden habe.

Der Grund: Es kam nicht wie sonst üblich eine Debug-Ausgabe, dass er das Property “Test}” nicht finden kann!
Sondern es kam eine “System.FormatException”… so und jetzt Ihr 😉 (nein, das war schon die InnerException!)

Also, nach langem suchen hab ich tatsächlich ein Bug in WPF gefunden 😉
Wenn Trace-Ausgaben aktiv sind, dann wird der Text in “Path” einfach ungeprüft der StringBuilder.AppendFormat-Methode als Formatstring übergeben… da aber in meinem Fall eine geschweifte Klammer drin war, konnte der String natürlich nicht erfolgreicht formatiert werden… deshalb die Exception (die mir aber nun mal gar nicht weitergeholfen hat).

Hab es mal gemeldet:
VS2008-SP1: FormatException in MS.Internal.AvTrace if Binding.Path contains curly braces…
VS2010-B1: FormatException in MS.Internal.AvTrace if Binding.Path contains curly braces…

Bitte abstimmen, ob Ihr den auch wichtig findet… (ich persönlich finde ja das ganze Debuggen des DataBindungs hundsmiserabel).

3 thoughts on “Simples XAML führt mich zur Verzweiflung…

  1. Mario

    Ich lass dazu immer die Ausgabe laufen, dort sieht man dann meist was der nicht richtig binden kann. Man hat dann eine Ausgabe in Form von: (System.Windows.Data Error: 39 : BindingExpression path error: ‘Test}’ property not found on ‘object’ …. )

  2. jkalmbach Post author

    Du hast vermutlich mein Blog-Eintrag nicht richtig gelesen…..

    Genau das hatte ich ja auch erwartet!!! Aber es kommt eine Exception, da die geschweifte Klammer an AppendFormat ungeprüft übergeben wird und es somit zur Excepion kommt, was natürlich zur Folge hat, dass die erwartete Info im Ausgabefenster *nie* kommt!!!

Comments are closed.