2009-10-28 6 views
5

Ich möchte an den Elementnamen eines Knotens in meinem XmlDataProvider binden. Ich kann nicht scheinen, dass local-name() in meinem XPath-Ausdruck funktioniert. Unterstützt XAML local-name()?XAML-Unterstützung für local-name() in XPath

<TextBlock Text="{Binding XPath=local-name()}" /> 

Antwort

1

Ich habe versucht, genau das gleiche zu tun und bin mir ziemlich sicher, dass es nicht in einem einzigen Schritt unterstützt wird. Die Binding.XPath Hilfe sagt Die XmlNode::SelectNodes Methode behandelt die XPath-Ausdrücke aus der XPath-Eigenschaft. XPath-Funktionen werden nicht unterstützt.

jedoch

Sie es umgehen kann ein bisschen wie ein Hack - benötigen Sie einen Container um das Element ein Datacontext zu schaffen, die das Ergebnis Ihrer XPath ist und dann können Sie die Localname-Eigenschaft abfragen von dass Kontextobjekt mit Pfad, wie in meinem Arbeitsbeispiel:

<StackPanel Grid.Row="20" Grid.Column="1" 
    DataContext="{Binding XPath=r:Result/r:LIC1}"> 
    <TextBlock Text="{Binding Path=LocalName}" /> 
</StackPanel> 

, die hatte ich ursprünglich versucht, mit zu erreichen:

<TextBlock Grid.Row="20" Grid.Column="1" 
    Text="{Binding XPath=r:Result/r:LIC1/local-name\(\)}" /> 
+0

Das Zitat aus der Dokumentation scheint der Schlüssel zu sein: "XPath-Funktionen werden nicht unterstützt." Ich frage mich, warum eine solche Beschränkung nicht in größeren Buchstaben ist? –