{"id":37,"date":"2009-07-02T18:25:10","date_gmt":"2009-07-02T17:25:10","guid":{"rendered":"http:\/\/blog.kalmbach-software.de\/de\/2009\/07\/02\/simples-xaml-fuhr-mich-zur-verzweiflung\/"},"modified":"2009-07-24T20:47:50","modified_gmt":"2009-07-24T19:47:50","slug":"simples-xaml-fuhr-mich-zur-verzweiflung","status":"publish","type":"post","link":"http:\/\/blog.kalmbach-software.de\/de\/2009\/07\/02\/simples-xaml-fuhr-mich-zur-verzweiflung\/","title":{"rendered":"Simples XAML f\u00fchrt mich zur Verzweiflung&#8230;"},"content":{"rendered":"<p>Wer schon mal extensiver mit XAML (WPF) zu tun gehabt hat, der weiss: Debugging von DataBinding ist nicht so ganz trivial&#8230;<\/p>\n<p>Ich hatte heute einen ganz simplen Cut-n-Past Error: Habe ein Binding Expression der Form <\/p>\n<pre lang=\"xml\">\r\n<Label Text=\"{Binding Path=Test}\" \/>\r\n<\/pre>\n<p>in ein MultiBinding eingef\u00fcgt&#8230; wer nun schon mal mit MultiBindings gearbeitet hat weiss, dass man dazu nicht die &#8220;Kurzform&#8221; mit den geschweiften Klammern verwendet, sonder das ganze in die &#8220;Elemente&#8221; reinschreibt&#8230; also aus dem obigen Beispiel wird dann ein<\/p>\n<pre lang=\"xml\">\r\n<Label>\r\n  <Label.Text>\r\n    <Binding Path=\"Test}\" \/>\r\n  <\/Label.Text>\r\n<\/label>\r\n<\/pre>\n<p>So&#8230; das sieht ja einfach aus \ud83d\ude09 jetzt hab ich aber beim Copy-and-Paste dummerweise die geschweifte Klammer am Ende mitkopiert&#8230; dann noch einige Zeit weitergearbeitet&#8230; und dann wollte ich starten&#8230; lies sich auch alles wunderbar compilieren&#8230;<br \/>\nNach dem Start kam aber das b\u00f6se Erwachen&#8230;. ich hab min. 1 Stunde gesucht (und dabei in den tiefen des .NET-Source-Codes debuggt) bis ich den Fehler gefunden habe.<\/p>\n<p>Der Grund: Es kam nicht wie sonst \u00fcblich eine Debug-Ausgabe, dass er das Property &#8220;Test}&#8221; nicht finden kann!<br \/>\nSondern es kam eine &#8220;System.FormatException&#8221;&#8230; so und jetzt Ihr \ud83d\ude09 (nein, das war schon die InnerException!)<\/p>\n<p>Also, nach langem suchen hab ich tats\u00e4chlich ein Bug in WPF gefunden \ud83d\ude09<br \/>\nWenn Trace-Ausgaben aktiv sind, dann wird der Text in &#8220;Path&#8221; einfach ungepr\u00fcft der StringBuilder.AppendFormat-Methode als Formatstring \u00fcbergeben&#8230; da aber in meinem Fall eine geschweifte Klammer drin war, konnte der String nat\u00fcrlich nicht erfolgreicht formatiert werden&#8230; deshalb die Exception (die mir aber nun mal gar nicht weitergeholfen hat).<\/p>\n<p>Hab es mal gemeldet:<br \/>\n<a href=\"https:\/\/connect.microsoft.com\/VisualStudio\/feedback\/ViewFeedback.aspx?FeedbackID=472149\">VS2008-SP1: FormatException in MS.Internal.AvTrace if Binding.Path contains curly braces&#8230;<\/a><br \/>\n<a href=\"https:\/\/connect.microsoft.com\/VisualStudio\/feedback\/ViewFeedback.aspx?FeedbackID=472257\">VS2010-B1: FormatException in MS.Internal.AvTrace if Binding.Path contains curly braces&#8230;<\/a><\/p>\n<p>Bitte abstimmen, ob Ihr den auch wichtig findet&#8230; (ich pers\u00f6nlich finde ja das ganze Debuggen des DataBindungs hundsmiserabel).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer schon mal extensiver mit XAML (WPF) zu tun gehabt hat, der weiss: Debugging von DataBinding ist nicht so ganz trivial&#8230; Ich hatte heute einen ganz simplen Cut-n-Past Error: Habe ein Binding Expression der Form in ein MultiBinding eingef\u00fcgt&#8230; wer nun schon mal mit MultiBindings gearbeitet hat weiss, dass man dazu nicht die &#8220;Kurzform&#8221; mit [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-37","post","type-post","status-publish","format-standard","hentry","category-alles-uber-dotnet-programmierung"],"_links":{"self":[{"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/posts\/37","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/comments?post=37"}],"version-history":[{"count":0,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/posts\/37\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/media?parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/categories?post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/tags?post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}