首页 > 解决方案 > Xamarin 表单 ListView 条目字段传输

问题描述

我正在构建一个需要 Entry 字段、Button 和 ListView 的应用程序,因此当我在 entry 字段中键入内容并单击按钮时,输入的字段将传递到 List View。有人有我可以依赖的例子吗?

提前致谢

标签: xamarin.forms

解决方案


因此,当我在输入字段中输入内容并单击按钮时,输入的字段将传递到列表视图。

首先,你可以参考这个官方文档创建一个ListView,并绑定数据。然后在布局中添加Button和Entry,最后你可以通过按钮点击事件来处理添加数据。

员工等级:

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

数据模型类:

public class DataModel 
{

    public ObservableCollection<Employee> employees = new ObservableCollection<Employee>();

    public DataModel()
    {
        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绑定到员工列表、添加ButtonEntry。单击按钮时,来自的文本Entry将添加到ListView

<?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:App1"
             x:Class="App1.MainPage">

    <StackLayout BackgroundColor="Gray">
        <!-- Place new controls here -->

        <Entry x:Name="EntryText" Placeholder="input"/>

        <Button Text="click me" 
                HorizontalOptions="Center"
                VerticalOptions="Center" 
                Clicked="OnButtonClicked"/>

        <ListView x:Name="EmployeeView">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextCell Text="{Binding DisplayName}" />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

    </StackLayout>

</ContentPage>

最后ContentPage会处理点击事件:

DataModel dataModel;
public MainPage()
{
    InitializeComponent();
    dataModel = new DataModel();
    EmployeeView.ItemsSource = dataModel.employees;
}

void OnButtonClicked(object sender, EventArgs args)
{
    Console.WriteLine("click me");
    dataModel.employees.Add(new Employee { DisplayName = EntryText.Text });
}

推荐阅读