Xamairn.Forms 用户控件——控件——ListView——ListView数据源

ListView数据源

了解如何使用数据填充ListView。

PDF用于离线使用
  • 下载PDF
相关样品:
  • 双向绑定

让我们知道你对此的感受

ListView用于显示数据列表。我们将了解如何使用数据填充ListView,以及如何绑定到所选项目。

  • 设置ItemsSource - 使用一个简单的列表或数组。
  • 数据绑定 - 建立模型和ListView之间的关系。绑定是MVVM模式的理想选择。

的ItemsSource

ListView使用ItemsSource属性填充数据,该属性可以接受任何实现的集合IEnumerable。填充的最简单的方式ListView涉及使用字符串数组:

var listView = new ListView();
listView.ItemsSource = new string[]{
  "mono",
  "monodroid",
  "monotouch",
  "monorail",
  "monodevelop",
  "monotone",
  "monopoly",
  "monomodal",
  "mononucleosis"
};

//monochrome will not appear in the list because it was added
//after the list was populated.
listView.ItemsSource.Add("monochrome");

上面的方法将填充ListView一个字符串列表。默认情况下,ListView将为每行调用ToString并显示结果TextCell。要自定义数据的显示方式,请参阅“ 单元格外观”。

因为ItemsSource已经发送到一个数组,内容不会随着底层列表或数组的更改而更新。如果您希望ListView自动更新,因为在基础列表中添加,删除和更改项目,则需要使用ObservableCollectionObservableCollection被定义在System.Collections.ObjectModel和它是一样的List,除了它可以通知ListView任何更改:

ObservableCollection<Employees> employeeList = new ObservableCollection<Employess>();
listView.ItemsSource = employeeList;

//Mr. Mono will be added to the ListView because it uses an ObservableCollection
employeeList.Add(new Employee(){ DisplayName="Mr. Mono"});

数据绑定

数据绑定是将用户界面对象的属性与某些CLR对象的属性(如ViewModel中的类)绑定的“粘合”。数据绑定是有用的,因为它通过替代大量无聊的样板代码简化了用户界面的开发。

数据绑定的工作原理是保持对象同步,因为绑定值发生变化。每当控件的值发生变化时,不必编写事件处理程序,您就可以在ViewModel中建立绑定和启用绑定。

有关数据绑定的更多信息,请参阅数据绑定基础,这是Xamarin.Forms XAML基础知识文章系列的第四部分。

绑定细胞

单元格(和单元格的子元素)的属性可以绑定到对象的属性ItemsSource。例如,ListView可以用于呈现具有图像的员工列表。

员工类:

public class Employee{
    public string DisplayName {get; set;}
}

ObservableCollection被创建并设置为ListView's ItemsSource

ObservableCollection<Employee> employees = new ObservableCollection<Employee>();
public EmployeeListPage()
{
  //defined in XAML to follow
  EmployeeView.ItemsSource = employees;
  ...
}

列表中填有数据:

public EmployeeListPage()
{
  ...
  employees.Add(new Employee{ DisplayName="Rob Finnerty"});
  employees.Add(new Employee{ DisplayName="Bill Wrestler"});
  employees.Add(new Employee{ DisplayName="Dr. Geri-Beth Hooper"});
  employees.Add(new Employee{ DisplayName="Dr. Keith Joyce-Purdy"});
  employees.Add(new Employee{ DisplayName="Sheri Spruce"});
  employees.Add(new Employee{ DisplayName="Burt Indybrick"});
}

以下代码段演示了ListView绑定到员工列表:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:constants="clr-namespace:XamarinFormsSample;assembly=XamarinFormsXamlSample"
x:Class="XamarinFormsXamlSample.Views.EmployeeListPage"
Title="Employee List">
  <ListView x:Name="EmployeeView">
    <ListView.ItemTemplate>
      <DataTemplate>
        <TextCell Text="{Binding DisplayName}" />
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>
</ContentPage>

请注意,为了简单起见,绑定是在代码中设置的,尽管它可能已被绑定到XAML中。

XAML的前一位定义了一个ContentPage包含一个ListViewListView通过ItemsSource属性设置数据源。元素中ItemsSource定义了每一行的布局ListView.ItemTemplate

这是结果:

绑定SelectedItem

通常,您需要绑定到所选项目ListView,而不是使用事件处理程序来响应更改。要在XAML中执行此操作,请绑定SelectedItem属性:

<ListView x:Name="listView"
 SelectedItem="{Binding Source={x:Reference SomeLabel},
 Path=Text}">
</ListView>

假设listViewItemsSource是一个字符串列表,SomeLabel将其text属性绑定SelectedItem

你可能感兴趣的:(Xamarin,xamarin.forms,Xamarin.Forms,跨平台新势力,xamarin,xamarin.forms)