2011-02-07 10 views
8

No se puede establecer un 'Encuadernación' en la propiedad 'Fuente' del tipo 'Encuadernación'. Un 'Enlace' solo se puede establecer en una DependencyProperty de un DependencyObject.No se puede establecer un 'Enlace' en la propiedad 'Fuente' del tipo 'Encuadernación'

<TreeView Height="400" Width="400"> 
    <TreeViewItem ItemsSource="{Binding Source={Binding Path=Data}, XPath=*, 
Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root }" Header="header" /> 
    </TreeView> 
  • ¿Qué hay de malo en ItemsSource = "{Binding Fuente = {ruta de enlace = Datos}?

    Data = "<root><parm1>1</parm1><parm2>2</parm2><parm3>3</parm3></root>" 
    

trato de usar la muestra this código. El diferir es que quiero vincular el ItemsSource a los datos en el contexto de datos. No hay nada de malo en el convertidor.

EDIT:

<TreeViewItem ItemsSource="{Binding Path=Data}" Header="Parameters" /> 

rellenos TreeView con un elemento (la cadena). Entonces el contexto de datos es correcto.

EDITAR: Este código funciona mejor. ¿Hay una forma genérica de leer XML en ThreeView? No sé la estructura de XML. En todos los ejemplos que he visto, debe declarar tipos de subnodos.

<TreeViewItem DataContext="{Binding Path=Data, Converter={StaticResource stringToXmlDataProviderConverter}}" ItemsSource="{Binding .}" Header="Parameters" /> 
+0

¿Cómo son los 'Datos'? ¿Cuál es su tipo de datos? ¿Cuáles son sus propiedades? – Gabe

Respuesta

4

Propiedad de enlace La fuente no puede vincularse porque no es una Propiedad de dependencia. ¿Seguro que no quieres hacer esto? :

{Binding Path=Data, XPath=*, Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root} 

EDIT:

una lista de verificación para comprobar durante la depuración fijaciones:

1) ¿Ha ajustado correctamente DataContext?

2) ¿La propiedad es visible para el código XAML?

3) Se accede a la propiedad (poner un punto de interrupción en su getter). ¿Devuelve el valor que se supone que debe?

4) ¿La propiedad se actualizó correctamente? Cualquiera de siguientes situaciones se aplica:

  • La propiedad es DependecyProperty

  • La propiedad notifica acerca su cambio a través de INotofyPropertyChanged

  • El valor de la propiedad con nosotros finalizamos antes de llamar a InitializeComponent()

+0

¿Cuál es la solución? –

+0

Quité la encuadernación interior. –

+0

Cuando uso su código no obtengo ninguna excepción, pero no obtengo ningún dato en el árbol. stringToXmlDataProviderConverter no se ejecuta tampoco. –

Cuestiones relacionadas