2009-06-30 14 views
6

Supponiamo di avere un UserControl il cui DataContext è impostato su un oggetto che ha una proprietà XmlDataProvider. Vorrei associare a questa proprietà XAML del mio controllo e specificare un XPath. Ho provato questo:Le proprietà di binding WPF Path e XPath si escludono a vicenda?

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

In fase di esecuzione ottengo l'eccezione "BindingExpression con XPath non può legarsi ad oggetto non-XML". La rimozione della proprietà Path e l'impostazione del DataContext TreeView su XmlPropertyName funzionano correttamente.

Cosa dà? Path e XPath si escludono a vicenda?

risposta

3

Non si escludono a vicenda, come menzionato brevemente nello Data Binding Overview nella sezione Specificare il percorso per il valore. L'espressione XPath verrà eseguita prima della proprietà Path, ma a volte è desiderabile utilizzarla come spiega Bea Stollnitz here e here.

"La rimozione della proprietà Path e l'impostazione del DataContext di TreeView su XmlPropertyName funzionano correttamente."

Dal momento che lei ha citato questo, mi sembra, come ci si aspetta la proprietà Path da valutare prima che l'espressione XPath, che sarebbe il motivo per cui si stanno ottenendo un errore, l'espressione XPath è la valutazione sul qualunque sia il vostro contesto corrente è, e il percorso viene valutato dopo. errore spiegazione

Problemi correlati