2012-08-06 10 views
5

Ich entwickle eine App Metro für Windows 8. Ich verwende GridApp (Xaml) Projekt, aber ich möchte in jedem Abschnitt andere Gruppenart verwenden.Wählen Sie Gruppenstil in gridview

Mein Code ist:

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"); 

    } 
} 

ich diese Klasse verwenden Gruppe Stil und 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}" /> 

zum Wähler aber der Stil-Gruppe ändert sich alles auf einmal.

+0

Sie, wenn Sie dieses [Thema] sehen (http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/ Thread/63a5d82c-1ad2-4e24-bfb4-122d5551c5f0 /) auf MSDN beantwortet Ihre Frage. –

+0

Und die Frage ist? – Denis

+0

Ich habe genau das gleiche Problem und so tut jeder auf diesem Thread http://social.msdn.microsoft.com/Forums/en-GB/winappswithcsharp/thread/5f12273f-e000-4c96-a4bc-6ccc18a104a0 – krisdyson

Antwort

0

Wie von Lvsti bereits erwähnt wurde, kann GroupStyleSelector den Stil nur bei jedem Level ändern. z.B. Alle Gruppen der Stufe 0 haben den gleichen Stil, aber alle Gruppen der Stufe 1 können einen anderen Stil haben. Derzeit ist es nicht möglich, zwei verschiedene Gruppen auf Level 0 mit unterschiedlichen Stilen zu haben. Tatsächlich scheint es so zu sein, dass der letzte für jede Gruppe auf derselben Ebene zurückgegebene Stil auf alle Gruppen auf dieser Ebene angewendet wird. Es ist bedauerlich, aber das ist das aktuelle Design.

Dev Unterstützung, Design-Unterstützung und mehr awesome Güte auf dem Weg: http://bit.ly/winappsupport

+1

warte, mir fehlt hier eindeutig etwas. Wie hättest du mehr als eine Level-0-Gruppe? Ich habe nur die gruppierte Gridview gesehen, die verwendet wurde, um die Gruppen und ihre Elemente anzuzeigen (wie in der GroupedItemsView-Vorlage). Kannst du mir ein Beispiel für eine gruppierte Gridview zeigen, dass a) mehr als eine Ebene hat und b) einen Groupstyle-Selector verwendet? Danke! – SelAromDotNet