2012-08-06 15 views
5

Estoy desarrollando una aplicación metro para windows 8. Yo uso el proyecto GridApp (xaml), pero quiero usar un estilo de grupo diferente en cada sección.Seleccionar estilo de grupo en gridview

Mi código es:

public class GroupTemplateSelector : GroupStyleSelector 
{ 

    public GroupStyle NewsItemGroupStyle { get; set; } 
    public GroupStyle NormalGroupStyle { get; set; } 

    protected override GroupStyle SelectGroupStyleCore(object group, uint level) 
    { 
     // a method that tries to grab an enum off the bound data object 

     if (level == 3) 
     { 
      return NewsItemGroupStyle; 
     } 
     else 
     { 
      return NormalGroupStyle; 
     } 

     throw new ArgumentException("Unexpected group type"); 

    } 
} 

utilizo esta clase de selector de estilo de grupo y XAML

<!-- NewsItemGroupStyle --> 
<GroupStyle x:Key="NewsItemGroupStyle"> 
    <GroupStyle.HeaderTemplate> 
     <DataTemplate> 
     </DataTemplate> 
    </GroupStyle.HeaderTemplate> 
    <GroupStyle.Panel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Vertical" Margin="0,0,80,0" VerticalAlignment="Bottom"/> 
     </ItemsPanelTemplate> 
    </GroupStyle.Panel> 
</GroupStyle> 


<!-- NormalItemGroupStyle --> 
<GroupStyle x:Key="NormalGroupStyle"> 
    <GroupStyle.HeaderTemplate> 
     <DataTemplate> 
      <Grid Margin="1,0,0,6"> 
       <Button 
        AutomationProperties.Name="Group Title" 
        Content="{Binding Title}" 
        Background="Blue" 
        Click="Header_Click" 
        Style="{StaticResource TextButtonStyle}" 
        /> 
      </Grid> 
     </DataTemplate> 
    </GroupStyle.HeaderTemplate> 
    <GroupStyle.Panel> 
     <ItemsPanelTemplate> 
      <VariableSizedWrapGrid Orientation="Vertical" Margin="0,0,80,0"/> 
     </ItemsPanelTemplate> 
    </GroupStyle.Panel> 
</GroupStyle> 

<!-- selector --> 
<common:GroupTemplateSelector 
    x:Key="groupSelector" 
    NewsItemGroupStyle="{StaticResource NewsItemGroupStyle}" 
    NormalGroupStyle="{StaticResource NormalGroupStyle}" /> 

pero el grupo cambia de estilo a la vez.

+0

Puede ver si esto [thread] (http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/ thread/63a5d82c-1ad2-4e24-bfb4-122d5551c5f0 /) en MSDN responde su pregunta. –

+0

Y la pregunta es? – Denis

+0

Tengo exactamente el mismo problema y también todos en este hilo http://social.msdn.microsoft.com/Forums/en-GB/winappswithcsharp/thread/5f12273f-e000-4c96-a4bc-6ccc18a104a0 – krisdyson

Respuesta

0

Como señaló Lvsti, GroupStyleSelector solo puede cambiar el estilo en cada nivel de . p.ej. todos los grupos de nivel 0 tendrán el mismo estilo, pero todos los grupos de nivel 1 podrían tener un estilo diferente. Actualmente no es posible tener dos grupos diferentes en el nivel 0 con diferentes estilos. De hecho, parece que el último estilo devuelto para cualquier grupo en el mismo nivel se aplica a todos los grupos en ese nivel. Es desafortunado, pero ese es el diseño actual.

apoyo Dev, el apoyo y la bondad de diseño más impresionante en la forma: http://bit.ly/winappsupport

+1

espera, claramente me falta algo aquí. ¿cómo tendrías más que un grupo de nivel 0? Solo he visto la vista de cuadrícula agrupada que se usa para mostrar los grupos y sus elementos (como en la plantilla GroupedItemsView). ¿Puede mostrarme un ejemplo de una vista de cuadrícula agrupada que a) tiene más de un nivel yb) utiliza un selector de estilos de grupo? ¡gracias! – SelAromDotNet

Cuestiones relacionadas