【发布时间】:2017-09-28 12:37:36
【问题描述】:
如何将新项目添加到分组列表视图?我是否应该每次重新组合我的项目并将其分配给 Listview.ItemsSource? 我添加了按钮来更新绑定到 Grouped ListView 的可观察集合。它是更新 ListView 的唯一正确方法吗?我哪里错了? 模型类:
public class Phone
{
public string Title { get; set; }
public string Company { get; set; }
public int Price { get; set; }
}
MainPage
public partial class MainPage : ContentPage
{
// список групп, к которым идет привязка
public ObservableCollection<Grouping<string, Phone>> PhoneGroups { get; set; }
public MainPage()
{
InitializeComponent();
// начальные данные
var phones = new List<Phone>
{
new Phone {Title="Galaxy S8", Company="Samsung", Price=60000 },
new Phone {Title="Galaxy S7 Edge", Company="Samsung", Price=50000 },
new Phone {Title="Huawei P10", Company="Huawei", Price=10000 },
new Phone {Title="Huawe Mate 8", Company="Huawei", Price=29000 },
new Phone {Title="Mi6", Company="Xiaomi", Price=55000 },
new Phone {Title="iPhone 7", Company="Apple", Price=38000 },
new Phone {Title="iPhone 6S", Company="Apple", Price=50000 }
};
// получаем группы
var groups = phones.GroupBy(p => p.Company).Select(g => new Grouping<string, Phone>(g.Key, g));
// передаем группы в PhoneGroups
PhoneGroups = new ObservableCollection<Grouping<string, Phone>>(groups);
phonesList.ItemsSource = PhoneGroups;
}
private void AddItemButton_Clicked(object sender, EventArgs e)
{
phones.Add
(
new Phone { Title = "Galaxy S3", Company = "Samsung", Price = 2500 }
);
// получаем группы
var groups = phones.GroupBy(p => p.Company).Select(g => new Grouping<string, Phone>(g.Key, g));
// передаем группы в PhoneGroups
PhoneGroups = new ObservableCollection<Grouping<string, Phone>>(groups);
phonesList.ItemsSource = PhoneGroups;
}
}
Xaml 主页
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:HelloApp;assembly=HelloApp"
x:Class="HelloApp.MainPage">
<StackLayout>
<ListView x:Name="phonesList"
HasUnevenRows="True"
GroupDisplayBinding="{Binding Name}"
ItemsSource="{Binding PhoneGroups}"
IsGroupingEnabled="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text="{Binding Title}" />
<Label Text="{Binding Price}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button x:Name="AddItemButton" Clicked="AddItemButton_Clicked" Text="AddItem" />
</StackLayout>
</ContentPage>
【问题讨论】:
标签: listview xamarin.forms grouping