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

来源:互联网 发布:苹果5s怎么关闭网络 编辑:程序博客网 时间:2024/06/06 03:39

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 ObservableCollectionemployeeList.Add(new Employee(){ DisplayName="Mr. Mono"});

数据绑定

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

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

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

绑定细胞

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

员工类:

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

ObservableCollection<Employee>被创建并设置为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

原创粉丝点击