Hallo!
Ich beschäftige mich seit ein paar Wochen mit C# unter Xamarin und kämpfe derzeit mit dem Databinding. Ansatzweise hab ichs verstanden. Aber nicht immer geht es wie es soll.
Aktuell habe ich einen ListView, der XElemente darstellen soll. Die Source ist zugewiesen und mit
<Label Text="{Binding Name}"...
kann ich den Namen der XElemente anzeigen lassen. Nun will ich aber nicht
den Namen sondern ein Attribute anzeigen. Also verwende ich
<Label Text="{Binding Path=Attribute[NameDesAttributes].Value}"....
und nichts passiert. Auch keine Fehlermeldung.
Wo liegt der Fehler ? Kann mir jemand helfen ?
Danke und Gruß
Thomas
Binding Errors siehst Du im Output Window von Visual Studio.
Warum aber bindest Du überhaupt ein Datenmodell wie XElement?
Warum bindest Du kein Modell? Was ist der Sinn?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Visual Studio meldet hierzu keinen Fehler.
Warum ich das so mache ? Naja, ich probier halt rum und versuche die Grenzen auszuloten. Die Idee komplett auf ein Zischenmodell zu verzichten find ich sexy. Und da ich beim Einlesen eines XMLs Objekte bekomme, die das Datenbinding prinzipiell unterstützen sehe ich wenig Sinn daraus nochmal andere Objekte zu generieren. Laut diversen Beschreibungen soll es doch gehen.
Der Sinn von Objekten besteht darin dass sie nicht nur einen Zustand sondern auch ein Verhalten kapseln: Man kann Methoden auf Objekten aufrufen. Das macht die Verarbeitung komplexer Prozesse einfacher als ein XML mit externen Funktionen anzufassen und zu manipulieren. Möglicherweise ist es schneller die XML-Struktur in Modellobjekte umzuwandeln als immer wieder umständlich nach XML-Bindungsfehler zu suchen.
So wie ich das in Übersicht über die WPF-Datenbindung mit LINQ to XML sowie Dynamische Eigenschaften in LINQ to XML verstehe, ist das Binden an diese dynamische Eigenschaften speziell in WPF implementiert (und nicht in Xamarin).
Sofern du Xamarin.Forms verwendest, könntest du wohl dessen Bindungswertkonverter für Xamarin.Forms verwenden, s. den Code in XDocument binding Elements and Attributes (du müßtest dann beim Binding
noch diesen Converter
angeben).