2009-06-30 8 views
6

Angenommen, ich habe eine UserControl, deren DataContext auf ein Objekt mit einer XmlDataProvider Eigenschaft festgelegt ist. Ich möchte an diese Eigenschaft im XAML meines Steuerelements binden und XPath angeben. Ich versuchte dies:Sind WPF-Bindungseigenschaften Pfad und XPath gegenseitig exklusiv?

<TreeView ItemsSource="{Binding Path=PropertyName, XPath=/items/item/*}"> 

Zur Laufzeit ich die Ausnahme bekommen „Binding mit XPath kann nicht binden an Nicht-XML-Objekt“. Das Entfernen der Path Eigenschaft und das Setzen des TreeView DataContext zu XmlPropertyName direkt funktioniert gut.

Was gibt? Sind Path und XPath sich gegenseitig ausschließend?

Antwort

3

Sie schließen sich nicht gegenseitig aus, wie kurz in der Data Binding Overview unter der Angabe des Pfades zum Wert Abschnitt erwähnt. Der XPath-Ausdruck wird vor der Path-Eigenschaft ausgeführt, ist aber manchmal wünschenswert, um Bea Stollnitz zu verwenden, erklärt here und here.

"Das Entfernen der Path-Eigenschaft und das Festlegen des DataContext der TreeView auf den XmlPropertyName funktioniert direkt."

Da Sie dies erwähnt, scheint es mir, wie Sie die Path-Eigenschaft erwarten vor dem XPath-Ausdruck ausgewertet werden, was wäre, warum Sie eine Fehlermeldung erhalten, ist der XPath-Ausdruck auf was auch immer Ihre aktuellen Kontext der Bewertung ist, und der Pfad wird danach ausgewertet. Fehlererklärung