2016-07-16 9 views
1

Ich versuche, die Gruppenkopf-Vorlage in Xamarin zu verwenden, bildet ich den folgenden Artikel gefolgt und umgesetzt haben, aber keinen Erfolg http://motzcod.es/post/94643411707/enhancing-xamarinforms-listview-with-grouping sogar Vorschlag von hier http://www.infinite-x.net/2015/04/08/working-with-the-listview-groupheadertemplate/Xamarin bildet Listview Gruppenkopf-Vorlage nicht funktioniert

nahm, wenn ich setze GroupDisplayBinding ich werde normalen Stil bekommen, obwohl ich Vorlage

<ListView.GroupHeaderTemplate> 
     <ViewCell> 
      <StackLayout 
       VerticalOptions="FillAndExpand" 
       BackgroundColor="#009688"> 
       <Label Text="{Binding Key}" TextColor="White" Margin="10" FontSize="Medium" /> 
      </StackLayout> 
     </ViewCell> 
     </ListView.GroupHeaderTemplate> 

wenn ich entfernen GroupDisplayBinding ich werde meine Gruppe Klassentyp in der Gruppe erhalten, wie in diesem Bild gezeigt See the top header sthotraani.Common.Grouping that's my class

Sammlungscode

private ObservableCollection<Grouping<string, MFullIssue>> _Issues; 
     public ObservableCollection<Grouping<string, MFullIssue>> Issues 
     { 
      get { return _Issues; } 
      set { _Issues = value; OnPropertyChanged(); } 
     } 

SthotramService.service.Issues().ContinueWith((t) => 
      { 
       var sorted = from c in t.Result 
          orderby c.IssueTypeName 
          group c by c.IssueTypeName 
          into theGroup 
          select new Grouping<string, MFullIssue>(theGroup.Key, theGroup); 

       Issues = new ObservableCollection<Grouping<string, MFullIssue>>(sorted); 
      }); 

Sammelobjekt

public class MFullIssue 
    { 
     public int IssueID { get; set; } 
     public int IssueTypeID { get; set; } 
     public string Issue { get; set; } 
     public int DisplayOrder { get; set; } 
     public bool IsActive { get; set; } 
     public string IssueTypeName { get; set; } 
     public string IssueTypeDesc { get; set; } 
     public List<MResolution> Resolutions { get; set; } 
    } 

Gruppierung Klasse

public class Grouping<K,T>:ObservableCollection<T> 
    { 
     public K Key { get; private set; } 

     public Grouping(K key, IEnumerable<T> items) 
     { 
      Key = key; 
      foreach (var item in items) 
      { 
       Items.Add(item); 
      } 
     } 
    } 
+0

Zeigen Sie den Code mit der Sammlung, an die gebunden wird, und den Objekttyp in der Sammlung an. – hvaughan3

+0

@ hvaughan3 aktualisiert den Beitrag mit Sammelcode – Krishna

Antwort

2

Ein Blick auf meine gruppierte Listview-Code, Ihre GroupHeaderTemplate Bedürfnisse ein DataTemplate sein. Nicht sicher, ob das die Wurzel Problem ist aber auf jeden Fall später Probleme verursachen, wenn nicht:

<ListView.GroupHeaderTemplate> 
    <DataTemplate> 
     <ViewCell> 
      ... 

Other than that, ich habe keine Probleme mit Ihrem Code sehen, so dass Sie die Gruppen sicher in Ihrem ObservableCollection Look machen müssen können richtig.

+0

Zunächst nach der Dokumentation GroupHeaderTemplate schließt sich mit ListView.GroupDisplayBinding gegenseitig aus. Wenn Sie diese Eigenschaft festlegen, wird ListView.GroupDisplayBinding auf null gesetzt. Allerdings ignoriert mein Problem listview Groupheadertemplate unabhängig von displaybinding, wie ich in meinem Beitrag erwähne, wenn ich Displaybinding gebe ich Name im Standard-Stil, wenn ich nicht Displaybinding setzen Ich bekomme meinen Klassennamen in der Kopfzeile – Krishna

+0

@Kris Siehe bearbeiten. – hvaughan3

+0

Ich denke, es gibt einen Fehler in der ListView -> groupheadertemplate aber nicht sicher. Ich habe alle Möglichkeiten ausprobiert. Die Listenansicht ignoriert groupheadertemplate. – Krishna