2011-05-12 19 views
7

He visto algunas otras preguntas 'vs' de Silverlight, pero no he podido encontrar ninguna para este enfrentamiento en particular.DataTemplate vs ItemContainerStyle

Estoy tratando de definir la forma en que se mostrarán mis objetos vinculados a ListBox. Definí un DataTemplate, pero realmente no estoy seguro de dónde debería terminar y debería comenzar el ItemContainerStyle.

Pregunta 1: ¿Es la ItemContainerStyle sólo un envoltorio para la DataTemplate por lo que un estilo de elemento común se puede aplicar a diferentes diseños de datos?

Pregunta 1a: Si es así, en el caso de que no se requiere un estilo de elemento común, es la ItemContainerStyle incluso necesario o pueden todo el diseño y el estilo pueden definir en el DataTemplate?

Pregunta 1b: Si no es así, so what is it?

El ListBox es actualmente la siguiente manera:

<ListBox Margin="40,118,41,61" ItemTemplate="{StaticResource TaskDataTemplate}"/> 

El XAML para mi DataTemplate es así:

<DataTemplate x:Key="TaskDataTemplate"> 
     <Grid d:DesignHeight="95" Height="150"> 
      <StackPanel Margin="11,8,-10,68" Orientation="Horizontal" d:LayoutOverrides="Width"> 
       <TextBlock x:Name="TaskLabel" Margin="0,0,0,8" Style="{StaticResource TitleTextSmall}" TextWrapping="Wrap" Text="Task" VerticalAlignment="Stretch" d:LayoutOverrides="Height"/> 
       <TextBlock x:Name="TaskID" HorizontalAlignment="Right" Margin="10,0,0,0" Style="{StaticResource TitleTextSmall}" TextWrapping="Wrap" Text="TaskID" VerticalAlignment="Stretch" d:LayoutOverrides="Height"/> 
       <TextBlock x:Name="ChangeList" Style="{StaticResource NormalText}" TextWrapping="Wrap" Text="Changes..." Margin="30,2,0,0"/> 
      </StackPanel> 
      <ComboBox x:Name="TaskType" Style="{StaticResource TaskComboBox}" Height="29" VerticalAlignment="Top" Margin="131,30,16,0" d:LayoutOverrides="VerticalAlignment"/> 
      <TextBlock x:Name="TaskTypeLabel" Margin="12,39,0,0" Style="{StaticResource NormalTextBold}" TextWrapping="Wrap" Text="Variation Reason" VerticalAlignment="Top" HorizontalAlignment="Left" Height="21"/> 
      <TextBox x:Name="TaskDescription" Margin="12,70,15,11" TextWrapping="Wrap" Text="Enter description..." Style="{StaticResource TaskTextBox}" d:LayoutOverrides="VerticalAlignment"/> 
     </Grid> 
    </DataTemplate> 

Gracias.

Respuesta

7

Respuesta 1: sí

respuesta 1a: por lo que yo puedo decir que usted puede hacer todo su estilo en el ItemTemplate pero el ItemContentStyle tiene VisualStates que controlan la opacidad en el mouse encima/discapacitados/seleccionada etc.

Si desea cambiar esos cambios de estado de opacidad, o si desea cualquier forma de Contenedor que no sea un rectángulo, como un triángulo, por ejemplo, tendrá que anular el ItemContainerStyle predeterminado.

+0

Nice one, ta. Supongo que por ItemContentTemplate te refieres a ItemContainerStyle? – Town

+0

Sí, editado. Gracias – BenCr

+0

Además, para la forma del contenedor, ¿podría agrupar los contenidos de mi DataTemplate en un borde y tener esquinas redondeadas sobre eso? ¿Se trata solo de formas complejas que requerirían el uso de un ItemContainerStyle? – Town

Cuestiones relacionadas