2011-12-21 10 views
8

Quiero agrupar mis elementos (imágenes) en un ListBox en la fecha en que fue creado. Entonces sólo tiene que utilizar este código:ListBox Groupstyle display: ¿Cómo diseñar un nombre de grupo?

<ListBox.GroupStyle> 
      <GroupStyle /> 
</ListBox.GroupStyle> 

PERO Cuando traté de aplicar un poco de estilo (es decir Frontera), no tengo el nombre del grupo que se muestra. SOLAMENTE la Frontera Aquí mi nueva aplicación de las agrupaciones utilizando DateTime:

<ListBox.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.HeaderTemplate> 
        <DataTemplate> 
         <Border BorderBrush="Gray" BorderThickness="1" CornerRadius="8"> 
          <TextBlock Text="{Binding Path=DateCreated}" FontWeight="Bold" HorizontalAlignment="Center"/> 
         </Border> 
        </DataTemplate> 
       </GroupStyle.HeaderTemplate> 
      </GroupStyle> 
     </ListBox.GroupStyle> 

Aquí está mi ICollectionView en mi MainWindow:

ICollectionView view = CollectionViewSource.GetDefaultView(CollectedFiles); 
     view.GroupDescriptions.Add(new PropertyGroupDescription("DateCreated", new DateTimeToDateConverter())); 
     view.SortDescriptions.Add(new SortDescription("FileFullName", ListSortDirection.Ascending)); 

NOTA: utilizo DateTimeToDateConverter() convertidor que vuelve fecha sin tiempo

Respuesta

8

Referencia: http://msdn.microsoft.com/en-us/library/system.windows.controls.groupstyle.headertemplate.aspx

Al definir grupos utilizando el GroupDescriptions, su objeto vista (un objeto CollectionViewSource o un objeto que se deriva de CollectionView) envuelve cada grupo en un objeto CollectionViewGroup.

Básicamente, cuando se agrega un PropertyGroupDescription WPF realidad genera una CollectionViewGroup. Deberá enlazar a la propiedad Name, no a la propiedad DateCreated (que no existe en el nuevo CollectionViewGroup creado por el motor WPF).

<ListBox.GroupStyle> 
    <GroupStyle> 
     <GroupStyle.HeaderTemplate> 
      <DataTemplate> 
        <Border BorderBrush="Gray" BorderThickness="1" CornerRadius="8"> 
         <TextBlock Text="{Binding Path=Name}" FontWeight="Bold" HorizontalAlignment="Center" /> 
        </Border> 
       </DataTemplate> 
      </GroupStyle.HeaderTemplate> 
    </GroupStyle> 
</ListBox.GroupStyle> 
+0

Guau ... genial ... realmente echo de menos ... Muchas gracias ... ahora está mostrando. – Raf

Cuestiones relacionadas