Evo celog primera :
ListView sa grupama izgleda ovako :
Code:
<ListView x:Name="lstListaKlijenata" >
<ListView.GroupStyle>
<GroupStyle HidesIfEmpty="False">
<GroupStyle.ContainerStyle>
<Style TargetType="GroupItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupItem">
<Expander IsExpanded="True">
<Expander.Header>
<TextBlock TextWrapping="Wrap" Margin="0,10,0,5" >
<Bold><TextBlock Text="{Binding Ime}"/></Bold> (<TextBlock Text="{Binding ItemCount}"/> servers)
</TextBlock>
</Expander.Header>
<ItemsPresenter/>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Adresa" DisplayMemberBinding="{Binding Adresa}"/>
<GridViewColumn Header="Ime" DisplayMemberBinding="{Binding Zaglavlje.Ime}"/>
</GridView>
</ListView.View>
</ListView>
Kod za unos podataka je ovakav :
Code:
class Zaglavlje
{
public string Ime { get; set; }
}
class Klijent
{
public Zaglavlje Zaglavlje { get; set; }
public string Adresa { get; set; }
}
Zaglavlje zaglavlja = new[]
{
new Zaglavlje { Ime = "Pera" },
new Zaglavlje { Ime = "Jova" },
new Zaglavlje { Ime = "Laza" },
};
ListCollectionView ListaKlijenata = new ListCollectionView(new[]
{
new Klijent { Zaglavlje = zaglavlja[0], Adresa = "xxx" },
new Klijent { Zaglavlje = zaglavlja[1], Adresa = "yyy" },
new Klijent { Zaglavlje = zaglavlja[2], Adresa = "zzz" },
});
PropertyGroupDescription groupDescription = new PropertyGroupDescription("Zaglavlje.Ime");
foreach (Zaglavlje zaglavlje in zaglavlja)
{
groupDescription.GroupNames.Add(zaglavlje.Ime);
}
ListaKlijenata.GroupDescriptions.Add(groupDescription);
lstListaKlijenata.ItemsSource = ListaKlijenata;
Ono što ja ne umem je da dinamički iz baze dodam stavke u zaglavlja i ListaKlijenata.