2011-03-02 5 views
11

Estaba intentando vincular mis columnas de DataGrid a una lista donde el elemento de una columna podría recuperarse utilizando un indexador. El tipo de indexador es DateTime.PropertyPath y PathParameters en el constructor

Estoy creando las columnas de DataGrid usando código y quería crear un enlace para recuperar el valor de la lista. En XAML el camino debería escribirse como:

{Binding Path = Valores [01/01/2011]}

Pero ya lo estoy haciendo en el código detrás de lo que necesito para definir la ruta utilizando un PropertyPath, como entonces:

new Binding{ 
    Path = new PropertyPath("Values[01/01/2011]") 
} 

Hay otra sobrecarga para el constructor que toma una ruta y una matriz de parámetros. De acuerdo con el documentation, los parámetros se utilizan para indexadores. Pero cuando escribo mi enlace como

new Binding { 
    Path = new PropertyPath("Values", new DateTime(2011, 01, 01)) 
} 

el enlace no puede resolver la ruta. De acuerdo, no estoy diciendo que debería buscar un indexador. Pero si lo escribo como:

nueva encuadernación { Path = new PropertyPath ("Valores []", nueva DateTime (2011, 01, 01)) }

continuación DateTime.MinValue se pasa a la indexador.

¿Puede alguien explicarme cómo uso los PathParameters en el constructor y cómo puedo enlazar a los indexadores sin tener que hacer un ToString en mi valor en la ruta real?

Respuesta

13

Según este artículo MSDN, debe incluir "(0)" para indicar dónde debe colocarse el parámetro. Así que lo siguiente debería funcionar:

new Binding { 
    Path = new PropertyPath("Values[(0)]", new DateTime(2011, 01, 01)) 
} 
+0

Gracias por eso, estaba empezando a pensar que no había respuesta. – jjrdk