2011-01-07 14 views
5

¿Existe una técnica general de diseño o creación de plantillas XAML para presentar una lista de elementos con datos como una lista delimitada en la pantalla?Render delimited list in XAML?

Imagina que se produce algo así como una declaración de llamada a función en XAML: foo(a,b,c) donde "a", "b" y "c" provienen de una lista de datos enlazados. ("foo" también está vinculado a los datos, pero no a la lista de parámetros)

Los elementos "a", "b" y "c" deben seguir siendo elementos de la IU XAML para que puedan ser interactivos UI y se puedan usar en XAML . (Así que creo que esto descalifica la concatenación de cadenas simples como una solución)

El punto crítico es no tienen una coma al final espuria al final de la lista.

Esto está relacionado de alguna manera con la pregunta de cómo diseñar el primer y/o último elemento de una lista de forma diferente a los elementos del medio. He visto sugerencias aquí en stackoverflow para usar un ItemsTemplateSelector en un ItemsControl para probar si un artículo es el primero o el último en la lista y devolver la plantilla adecuada, pero el problema con eso es que DataTemplateSelector.SelectTemplate no tiene acceso a la lista que el el artículo vino de. Puede piratear el conocimiento carnal de una lista en particular como un kludge único, pero ¿cómo lo hace de una manera reutilizable y de uso general?

Respuesta

3

En WPF, puede usar un enlace con la fuente relativa PreviousData. Si los datos anteriores son nulos, usted sabe que es el primer elemento de la lista, por lo que no es necesario anteponer un separador.

Por desgracia, Silverlight no es compatible con esto y no pude encontrar una buena solución cuando tenía exactamente el mismo requisito. Terminé simplemente estableciendo un margen tal que la coma final nunca sería visible.

+0

BTW: El enlace PreviousData no se actualiza al utilizar ObservableCollection .Move (int, int) para reordenar elementos. – springy76