XAML
Hias
- xml
Hallo!
Ich habe folgendes Problem: Ich habe ein XAML Stylesheet das ich entsprechend anpassen muss. Grundsätzlich werden aus einer Datenbank diverse Daten abgefragt und genau diese Daten müssen anschließend dargestellt werden. Das Stylesheet ist fix und fertig (ich auch). Jetzt fragen wir jedoch einen Datensatz ab, den ich zwar ausgegeben kann, jedoch ist dieser Datensatz erstens ein Blob-typ und zweitens ein XML. Nunja, wie soll ich das jetzt anstellen, dass ich nur einzelne XML Tags ausgeben kann? Lass ich den gesamten DS ausgeben, schaut das erstens nicht gut aus und zweitens stehen unnütze Daten drin. Ich habe an XPath gedacht, aber keine Ahnung wie ich das in der komischen Sprache hinkriege, dass XPath funktioniert...
Ich habe mich jetzt tagelang mit allem möglichen Databinding und den ganzen Kram beschäftigt aber krieg das nicht hin. Da es mittlerweile dringend wird, wende ich mich an euch.
Hat jemand mit XAML Erfahrung, bzw. kann mir jemand helfen?
lg
Achja: Der Abschnitt, wo die Daten ausgegeben werden sieht vorübergehend so aus:
<TextBox ItemsSource="{Binding Source={$KundeBuchung}, XPath=//Buchung/KDNr}" />
Da passiert nicht mehr als, dass plötzlich genau garnichts mehr angezeigt wird.
Tach!
Hat jemand mit XAML Erfahrung, bzw. kann mir jemand helfen?
Ich empfehle dir, dich an ein .NET-Forum zu wenden. Vielleicht findest du hier den einen oder anderen mit WPF-Erfahrung, aber dort wirst du deutlich mehr Chancen haben.
dedlfix.
Hi!
Ich könnte Dir vermutlich weiterhelfen. Aber die Problembeschreibung ist ungenau.
In die Textbox kann nur ein string geschrieben werden. Wie Du deine Daten (Blob, XML, wasauchimmer...) so aufbereitest, dass Du einen String daraus bekommst, ist Deine Sache.
Angenommen Du hast Deinen String, hast Du generell zwei Möglichkeiten diesen in die Textbox zu bekommen. Entweder Du schreibst in direkt per Code-behind in die Textbox (die Textbox benötigt einen Namen und dann kann im C#-Code per Name auf die Propertys der Textbox zugegriffen werden). Oder Du nutzt Databinding. Dabei musst Du einen DataContext definieren und dann dementsprechend das Binding in der Textbox angeben.
DataBinding ist die elegantere Methode. Code-behind die schnellere.
Sollte es weiter Probleme geben, wäre es sinnvoll wenn Du dein Problem genauer beschreibst.
Viele Grüße,
Lukas
Guten Morgen!
Ich danke mal für alle Antworten.
Hallo Lukas!
Das hört sich vielversprechend. Es wäre super wenn du mir weiterhilfst.
Nachdem ich mir lange in das .Net eingelesen habe, war mir irgendwie klar, dass es mit DataBinding gehen muss, weil ich hier auch die XPath Möglichkeit habe. Allerdings habe ich das überhaupt nicht verstanden, wie das funktioniert. Zu deinen Vorschlägen: Auf den Code habe ich keinen Zugriff und kann ich mir auch nicht ansehen, d.h. ich kann es nur direkt im XAML machen.
Nun eine ausführlichere Beschreibung: Wir benutzen eine Spezialsoftware hinter der eine riesige DB steht. Die Funktion die ich einbauen soll macht nichts anderes als Daten abfragen und ausgeben. Die Ausgabe erfolgt mittels XAML und Variablen folgendermaßen: {$Kunde}
Klicke ich auf ein Element in der Software, dann werden dazu die Daten in Variablen geladen und sollen mittels XAML dargestellt werden.
Wie funktioniert das DataBinding von Variablen? Dazu habe ich nichts gefunden.
Das Problem ist, dass die Variable {$variableX} = Blob = viele einzelne XML Tags. Und genau diese XML Tags müssen in einer Tabelle so dargestellt werden, wie sie der Kunde haben will.
Ich bin bis jetzt soweit gekommt (ist nur ein Ausschnitt des XAML):
////////////////////////////XAML
<StackPanel>
<StackPanel.Resources>
<XmlDataProvider x:Key="varXML" Source="{$XMLDaten}" />
</StackPanel.Resources>
<Grid Margin="0,10,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0">Name</Label>
<TextBox Grid.Row="0" Grid.Column="1" Name="varXML" Text="{Binding XPath=XML-Tag}" />
Das Ergebnis liefert mir leider nichts....
Weist du was ich ändern muss?
lg
Hey!
Zu deinen Vorschlägen: Auf den Code habe ich keinen Zugriff und kann ich mir auch nicht ansehen, d.h. ich kann es nur direkt im XAML machen.
Aber das XAML ist doch Teil des Codes? Es wird doch auch in die Anwendung hineinkompiliert?
Nun eine ausführlichere Beschreibung: Wir benutzen eine Spezialsoftware hinter der eine riesige DB steht. Die Funktion die ich einbauen soll macht nichts anderes als Daten abfragen und ausgeben. Die Ausgabe erfolgt mittels XAML und Variablen folgendermaßen: {$Kunde}
Ich fasse zusammen: Du sollst eine Anwendung erweitern, hast aber keinen Zugriff auf den Code? :-)
Klicke ich auf ein Element in der Software, dann werden dazu die Daten in Variablen geladen und sollen mittels XAML dargestellt werden.
Wie funktioniert das DataBinding von Variablen? Dazu habe ich nichts gefunden.
Letztendlich muss im XAML ein DataContext definiert werden. Dieser DataContext ist die Instanz einer Klasse welche die Datenobjekte, die gebunden werden sollen, enthält. Wenn Du aber keinen Zugriff auf den Code hast (also auf den DataContext etc.) musst Du hoffen, dass Dir XPATH weiterhilft :) Ich habe noch nie damit gearbeitet.
Ich kann Dir da leider nicht weiterhelfen. Mein Tip: Bau Dir eine kleine Beispielanwendung, welche Dein Problem nachstellt. Reduziere das XML des Blobs soweit, dass Du es mit deiner Beispielanwendung arbeitet. Im Idealfall hast Du dann ein sehr kleines XAML-File und ein bisschen XML. Mit diesen Infos würde ich mich jetzt an .NET-Forum wenden, welches sich speziell mit DataBinding auskennt.
Dein Fall ist wirklich sehr speziell, da Du eingeschränkten Zugriff auf den Code hast. Auf jeden Fall sollte das XML bekannt sein, da man ja nicht wissen kann, wie man es binden muss wenn man es nicht kennt.
Sorry dass ich Dir jetzt nicht abschließend weiterhelfen konnte. Vielleicht hilft Dir dieser Link noch weiter?
Viele Grüße,
Lukas
Hi,
du solltest dir einen ValueConverter fuer das XML schreiben, dem du als ConverterParameter das XPath Statement mitgeben kannst. Alles in diesem Data Binding Attribut.
Cheers, Frank