2010-05-10 11 views
10

Estoy tratando de crear un control de usuario dentro de una aplicación WPF que servirá como DataTemplate para ListBoxItem. El usuario controla una grilla con 4 TextBlock s. Este control también contiene otras formas e imágenes más para ayuda visual que nada, así que las omito del código en esta pregunta para mayor claridad.Use un control de usuario como DataTemplate dentro de una aplicación WPF

Cuando dejo de usar el control de usuario en mainwindow.xaml, puedo ver que el control y los campos enlazados correctamente apuntan al primer registro en el origen de datos. Lo que quiero hacer es hacer que este control se muestre repetidamente dentro de un cuadro de lista o un panel de ajuste para cada registro dentro de la base de datos.

¿Alguien puede proporcionarme un puntero o una muestra de cómo tener un control de usuario renderizado como DataTemplate dentro del panel de control/otro ListBox?

Hasta ahora, he intentado lo siguiente sin éxito: Gracias de antemano por cualquier consejo.

<!--within Window.Resource --> 
<DataTemplate x:Key="myActivity"> 
     <local:ucActivityItm /> <!--usercontrol --> 
</DataTemplate> 

<!-- Listbox within the window --> 
<ListBox HorizontalAlignment="Stretch" ItemTemplate="{DynamicResource myActivity}" VerticalAlignment="Stretch"> 
<ListBoxItem> 
<!-- control also added for testing to ensure it rendered out--> 
<local:ucActivityItm /> 
</ListBoxItem>   
</ListBox> 

Respuesta

13

Eso DataTemplate no es en realidad ser asignado a su ListBox. Hay tres maneras:

1: Reemplazar la plantilla en la sección de Recursos con

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <local:ucActivityItm /> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

en el ListBox.
2: Poco relacionado:

<ListBox ... ItemTemplate="{StaticResource myActivity}"> 

3: Ajuste el parámetro Tipo de datos de la DataTemplate arriba para cualquiera que sea el contenido de su ListBox es.

<DataTemplate x:Key="myActivity" DataType="{x:Type ...}"> 

Normalmente solo hago la primera, pero cualquiera debería funcionar.

Cuestiones relacionadas