2016-05-01 11 views
0

Ich habe die ListView.GroupStyle entdecken, die ein Problem von mehreren Headern lösen könnte. Nehmen wir an, dass ich diese Liste in XAML haben:Wie man dynamischen GroupStyle hinter Code erzeugt?

<ListView x:Name="Match"> 
    <ListView.View> 
      <GridView> 
        <GridViewColumn Header="Time" Width="50" DisplayMemberBinding="{Binding Time}" /> 
        <GridViewColumn Header="Minute" Width="70" DisplayMemberBinding="{Binding Minute}"/> 
        <GridViewColumn Header="Home" Width="Auto" DisplayMemberBinding="{Binding Home}"/> 
        <GridViewColumn Header="Away" Width="Auto" DisplayMemberBinding="{Binding Away}"/> 
        <GridViewColumn Header="1 Time" Width="80" DisplayMemberBinding="{Binding Result}"/> 
        <GridViewColumn Header="2 Time" Width="80" DisplayMemberBinding="{Binding MatchSecondTime}"/> 
      </GridView> 
     </ListView.View> 

Nehmen wir nun an, dass ich mehrere Group wie in this example hinzufügen möchten. Wie kann ich einen GroupStyle hinter Code erstellen?

Ich habe versucht, tatsächlich als:

Style myStyle = new Style(typeof(GroupItem)); 
Setter setter = new Setter(); 
setter.Property = MarginProperty; 
setter.Value = new Thickness(0, 0, 0, 0); 
myStyle.Setters.Add(setter); 

Setter setterTemplate = new Setter(); 
setter.Property = TemplateProperty; 
setter.Value = Template; 

GroupStyle gs = new GroupStyle(); 
gs.ContainerStyle = myStyle; 
Match.GroupStyle.Add(gs); 

aber ich kann nicht einen Header-Namen wie in dem Beispiel:

enter image description here

Meine Ziele ist erstellen GroupStyle Header wie in der angezeigten Beispiel Male, Female. Jemand könnte mir zeigen, wie?

+0

Sie haben uns nicht genügend Informationen gegeben. Um Ihnen zu sagen, wie man die Gruppierung durchführt, müssen Sie uns Ihre Klasse mitteilen, die die Daten enthält (wie 'class User' in Ihrem Link) und wir müssen die Enumeration kennen, die Sie zum Erstellen der Gruppe verwenden möchten (wie' enum SexType' in deinem Link). Ansonsten können wir dir nicht helfen ... – Taterhead

Antwort

1

Ich sehe von Ihrem other question here, dass Sie nach dem Land, sehr gut gruppieren möchten.

würde ich so etwas wie die folgenden Vorschlag:

public class MatchResults{ 
    public DateTime Time {get;set;} 
    public int Minute {get;set;} 
    public string Home {get;set;} 
    public string Away {get;set;} 
    public string 1-Time {get;set;} 
    public string 2-Time {get;set;} 
    public CountryType Country {get;set} 
} 

dann Sie Gruppe der Enum

enum CountryType{ 
    Austria, 
    Azerbaijan, 
    Belgium,... 
} 

dann in Ihrem Fensterkonstruktor nach InitializeComponent() Sie Ihre Datenelemente initialisieren und fügen Sie sie zu Ihre Liste und machen Sie sie zur Datenquelle des ListView von der XAML (kopieren Sie den größten Teil des Codes von the link). Dann werden die letzten drei Zeilen des Konstrukteurs, die Sie haben und die Sex Argument ersetzen, mit dem Land Argument:

CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(lvUsers.ItemsSource); 
PropertyGroupDescription groupDescription = new PropertyGroupDescription("Country"); 
view.GroupDescriptions.Add(groupDescription);