Xamarin Forms: ObservableCollection

I have ListViewattached to ObservableCollection<Request>. Here's the Requestclass:

public class Request
{
    public int Id { get; set; }
    public string RequestName { get; set; }
    public string Provider { get; set; }
    public int Done { get; set; }
}

I have only 2 possible values ​​in Done: 0or 1. Requestthat have Donea value set 0for one group, others for another group. How can I do that?

+4
source share
1 answer

This is how you group it. You may need to improve this to make it more user friendly.

Grouped Property

private ObservableCollection<Grouping<String, Request>> _groupedList = null;
public ObservableCollection<Grouping<String, Request>> GroupedList {
    get {
        return _groupedList;
    }
    set {
        _groupedList = value;
        RaisePropertyChanged(() => GroupedList);
    }
}

List creation

var list = new List<Request>();

var grouped = from Model in list
                         group Model by Model.Done into Group
                         select new Grouping<string, Request>(Group.Key, Group);

GroupedList = new ObservableCollection<Grouping<string, TModel>>(grouped);

Listview xaml

<ListView IsGroupingEnabled="true" HasUnevenRows="true">
    <ListView.GroupHeaderTemplate>
        <DataTemplate>
            <ViewCell>                
                <Label Text="{Binding Key}" VerticalOptions="Center"/>
            </ViewCell>
        </DataTemplate>
    </ListView.GroupHeaderTemplate>
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <ViewCell.View>
                <ContentView Padding="10">
                    <Label Text={Binding RequestName}" />
                </ContentView>
                </ViewCell.View>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
+4
source

Source: https://habr.com/ru/post/1618599/


All Articles