2011-05-09 14 views
6

Encuentro que hay algunas plantillas de elementos, plantillas de datos y enlaces en el archivo .xaml para listbox. ¿Hay alguna forma de crearlo en el código?Cómo crear ListBox.Itemtemplate, datatemplate programáticamente en Windows Phone 7

¿Hay alguna manera de crear plantillas de datos programáticamente?

este es el código XAML, pero necesito en el código detrás del uso de C# no en XAML, porque estoy trabajando en la creación de cuadro de lista dinámica con la adición de itemtemplatem, DataTemplate

<ListBox Height="520" HorizontalAlignment="Left" Margin="0,6,0,0" Name="lstimge" VerticalAlignment="Top" Width="450" > 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <Image Source="{Binding Image}" Width="150" Stretch="Uniform" HorizontalAlignment="Center" /> 
          <TextBlock Text="{Binding FileName}" TextWrapping="Wrap" /> 
         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

favor dar la solución

Gracias, Ashok

+0

¿Quizás podría explicar por qué desea hacer esto? En general, el concepto de MVVM es poder definir su vista sin ningún código. – RedDeckWins

+0

amablemente vea la etiqueta de pregunta editada arriba – Ash

+0

+1 para esta muy buena pregunta. Absolutamente no puedo entender por qué MS tiene esta evidente aversión por el código bien escrito, rápido, fuertemente tipado con muy buen soporte IDE y nos obliga a usar un patrón de diseño determinado, jugar en un cajón de arena bloqueado, obedecer sus guías de estilo y ahora también hostigar nosotros con estos archivos XML inflados y poco flexibles. – UnclePaul

Respuesta

5

no se puede construir plantillas de código - esto sólo se puede hacer a partir de XAML.

Si generó dinámicamente la plantilla XAML en su código, puede cargarla como se describe en here.

Sospecho que te encontrarás abriendo una lata de gusanos si sigues esta ruta. Como alternativa, se puede predefinir un conjunto de plantillas, y elegir la correcta dinámicamente en tiempo de ejecución, tal como se describe here

+0

@ Damian Mehers: cualquier otra forma de crear listbox dinámicamente (sin usar XMAL) sin usar la plantilla de datos. –

+0

var listBox = new ListBox { ItemsSource = Assembly.GetCallingAssembly(). GetTypes() }; LayoutRoot.Children.Add (listBox); – Damian

5

Usted podría utilizar XamlReader.Load para cargar dinámicamente XAML en el código subyacente y echarlo a un DataTemplate, después asignarlo a ItemTemplate. Here es un ejemplo.

+0

@ Dennis Delimarsky: Cualquier otra forma de crear listbox dinámicamente (sin usar XMAL) sin usar la plantilla de datos ... –

+0

Puede crear el ListBox mismo dinámicamente y agregarlo al árbol visual. Para la plantilla, tendrá que confiar en XAML. –

1

¿El DataTemplate que desea usar es el mismo para todos los listboxes o también generado dinámicamente? Si es el mismo para todos ellos, puede guardarlo como Style in your Resources y luego simplemente crear el objeto Listbox dinámicamente y aplicar el estilo.