2009-06-30 13 views
6

Supongamos que tengo un UserControl cuyo DataContext se establece en un objeto que tiene una propiedad XmlDataProvider. Me gustaría enlazar a esta propiedad en el XAML de mi control y especificar algunos XPath. He intentado esto:¿Las propiedades de enlace de WPF Path y XPath son mutuamente excluyentes?

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

En tiempo de ejecución consigo la excepción "BindingExpression con XPath no puede enlazar con el objeto no XML". La eliminación de la propiedad Path y la configuración del DataContext TreeView al XmlPropertyName funciona directamente bien.

¿Qué ofrece? ¿Son Path y XPath mutuamente excluyentes?

Respuesta

3

No son mutuamente excluyentes, como se menciona brevemente en el Data Binding Overview bajo el Especificando la ruta al valor sección. La expresión XPath se ejecutará antes que la propiedad Path, pero a veces es deseable utilizarla, ya que Bea Stollnitz explica here y here.

"Quitar la propiedad Ruta y configurar el DataContext de TreeView en XmlPropertyName funciona bien directamente."

Ya que menciona esto, me parece como que está esperando la propiedad Path para ser evaluados antes de la expresión XPath, que sería por eso que está recibiendo un error, la expresión XPath es evaluar en cualquiera que sea su contexto actual es, y el camino se está evaluando después de eso. error explicación

Cuestiones relacionadas