Xamarin Forms:分组 ObservableCollection
Xamarin Forms: Grouping ObservableCollection
我有一个 ListView
绑定到 ObservableCollection<Request>
。这里是 Request
class:
public class Request
{
public int Id { get; set; }
public string RequestName { get; set; }
public string Provider { get; set; }
public int Done { get; set; }
}
我在 Done
中只有 2 个可能的值:0
或 1
。将 Done
设置为 0
的 Request
分配给一组,其他分配给另一组。这怎么可能?
您可以按照以下方式对其进行分组。您可能需要进一步增强它以使其更加用户友好。
分组属性
private ObservableCollection<Grouping<String, Request>> _groupedList = null;
public ObservableCollection<Grouping<String, Request>> GroupedList {
get {
return _groupedList;
}
set {
_groupedList = value;
RaisePropertyChanged(() => GroupedList);
}
}
正在创建列表
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);
ListViewXaml
<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>
我有一个 ListView
绑定到 ObservableCollection<Request>
。这里是 Request
class:
public class Request
{
public int Id { get; set; }
public string RequestName { get; set; }
public string Provider { get; set; }
public int Done { get; set; }
}
我在 Done
中只有 2 个可能的值:0
或 1
。将 Done
设置为 0
的 Request
分配给一组,其他分配给另一组。这怎么可能?
您可以按照以下方式对其进行分组。您可能需要进一步增强它以使其更加用户友好。
分组属性
private ObservableCollection<Grouping<String, Request>> _groupedList = null;
public ObservableCollection<Grouping<String, Request>> GroupedList {
get {
return _groupedList;
}
set {
_groupedList = value;
RaisePropertyChanged(() => GroupedList);
}
}
正在创建列表
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);
ListViewXaml
<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>