2008-09-13 11 views
3

Jedes Beispiel, das ich gesehen habe, verwendet statisches XML in der xmldataprovider-Quelle, die dann verwendet wird, um UI-Steuerelemente mit XPath-Bindung zu binden. Idee ist, ein dynamisches XML (Struktur, die dem Entwickler während des Codierens bekannt ist) mit der WPF-Benutzeroberfläche zu bearbeiten.Wie lade ich eine XML-Zeichenfolge in den Code hinter datengebundenen UI-Steuerelementen, die an den XPath des XML binden?

Hat jemand eine Möglichkeit gefunden, eine dynamische XML-Zeichenkette zu laden (zum Beispiel aus einer Datei zur Laufzeit zu laden), dann diese XML-Zeichenkette als XmlDataprovider-Quelle verwenden?

Code-Schnipsel wäre toll.

Update: Um es klarer zu machen, Angenommen, ich möchte eine XML-Zeichenfolge laden, die ich von einem Web-Service-Aufruf erhalten habe. Ich kenne die Struktur des XML. Also habe ich es mit WPF UI-Steuerelementen im WPF-Fenster verbunden. Wie funktioniert das? Alle Stichproben über das Web definieren das gesamte XML innerhalb des XAML-Codes im XmlDataProvider-Knoten. Das ist nicht was ich suche. Ich möchte eine XML-Zeichenfolge im Codebehind verwenden, die mit den UI-Steuerelementen verknüpft werden soll.

+0

Ihre Frage ist nicht sehr klar. –

Antwort

2

Hier einige Code, den ich von der Festplatte eine XML-Datei zu laden verwendet und binden Sie es an einem TreeView. Ich habe einige der normalen Tests aus Gründen der Prägnanz entfernt. Das XML im Beispiel ist eine OPML-Datei.

XmlDataProvider provider = new XmlDataProvider(); 

if (provider != null) 
{ 
    System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); 
    doc.Load(fileName); 
    provider.Document = doc; 
    provider.XPath = "/opml/body/outline"; 
    FeedListTreeView.DataContext = provider; 
} 
1

Mit Ihrem Webservice holen Sie sich Ihr XML und erstellen daraus ein XML-Dokument. Sie können dann die Quelle Ihres xmlDataProviders auf das XMLDocument setzen, das Sie vom Service erhalten haben.

Ich bin nicht an einem PC mit Visual Studio, um es zu testen, aber es sollte für Sie möglich sein, dies zu tun.

Die Schritte sind wie Sie in Ihrer Frage erwähnt:

 
1. Get XML from webservice 
2. Convert XML String to XML Document 
3. Set the XMLDataProvider.Document value to your XML Document 
4. Bind that to your controls