C# Xamarin表单向listview的每个项目添加输入字段

C# Xamarin表单向listview的每个项目添加输入字段,c#,xamarin.forms,C#,Xamarin.forms,我是Xamarin表单的新手,我想在listview中每个项目的右侧添加一个输入字段(数字),这样我就可以为项目键入数量。比如一张购物清单,上面有你想要的数量 这是我的listview的代码 List<string> item = new List<string>(); public MainPage() { InitializeComponent(); item.Add("Apple"); item.

我是Xamarin表单的新手,我想在listview中每个项目的右侧添加一个输入字段(数字),这样我就可以为项目键入数量。比如一张购物清单,上面有你想要的数量

这是我的listview的代码

List<string> item = new List<string>();

    public MainPage()
    {
        InitializeComponent();


        item.Add("Apple");
        item.Add("Banana");
        item.Add("Graps");
        item.Add("Orange");
        item.Add("Pineapple");
        item.Add("Strawberry");
        item.Add("Lemon");
        item.Add("Mango");
        item.Add("Cherry");
        item.Add("Watermelon");
        item.Add("Add");

        var listView = new ListView
        {
            RowHeight = 40
        };

        listView.ItemsSource = item;

        StackLayout layout = new StackLayout();

        layout.Children.Add(listView);



        listView.ItemSelected += (sender, e) =>
        {
            if (e.SelectedItem.ToString() == "Add")
            {
                var MyEntry = new Entry { Placeholder = "new item" };
                layout.Children.Add(MyEntry);
                MyEntry.Completed += MyEntry_Completed;

            }
        };

        this.Content = layout;

    }

    private void MyEntry_Completed(object sender, EventArgs e)
    {
        var text = ((Entry)sender).Text;
        item.Add(text);

    }
列表项=新列表();
公共主页()
{
初始化组件();
项目。添加(“苹果”);
添加(“香蕉”);
添加项目(“图形”);
添加(“橙色”);
添加(“菠萝”);
添加(“草莓”);
项目。添加(“柠檬”);
添加(“芒果”);
添加(“樱桃”);
添加(“西瓜”);
项目。添加(“添加”);
var listView=new listView
{
行高=40
};
listView.ItemsSource=项目;
StackLayout布局=新的StackLayout();
layout.Children.Add(listView);
listView.ItemSelected+=(发件人,e)=>
{
如果(例如,SelectedItem.ToString()=“添加”)
{
var MyEntry=新条目{Placeholder=“new item”};
布局.childrent.Add(MyEntry);
MyEntry.Completed+=MyEntry\u Completed;
}
};
这个。内容=布局;
}
私有void MyEntry_已完成(对象发送方,事件参数e)
{
var text=((条目)sender).text;
增加(案文);
}

我在用Xamarin表单从C#端进行数据绑定时遇到了很多麻烦。我建议您结帐,以便更好地了解这一点。我创建了一个自定义ViewCell供您使用,并创建了一个基本实现,以便您可以直观地了解如何实现它。可以根据需要调整视图单元。我只是想给你一个如何实施的基础。希望这有帮助

ViewCell
这是为列表视图中的每个列表项显示的视图

using Xamarin.Forms;

namespace BountyApp.Controls
{
    public class CustomViewCell : ViewCell
    {
        private Grid _grid = new Grid();
        private Label _lbl = new Label() { HorizontalTextAlignment = TextAlignment.End, VerticalTextAlignment = TextAlignment.Center };
        private Entry _entry = new Entry();


        public CustomViewCell()
        {
            _lbl.SetBinding(Label.TextProperty, new Binding("Title"));
            _grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(0.3, GridUnitType.Star) });
            _grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(0.7, GridUnitType.Star) });

            _grid.Children.Add(_lbl, 0, 0);
            _grid.Children.Add(_entry, 1, 0);

            View = _grid;
        }

    }
}
实现ViewCell

using Xamarin.Forms;

namespace BountyApp.Pages
{
   public class ViewModel
    {
        public string Title { get; set; }
    }
    public class StepperPage : ContentPage
    {
       public ObservableCollection<ViewModel> List { get; set; }

        public StepperPage()
        {
            List = new ObservableCollection<ViewModel>();
            List.Add(new ViewModel { Title = "Apple"      });
            List.Add(new ViewModel { Title = "Banana"     });
            List.Add(new ViewModel { Title = "Graps"      });
            List.Add(new ViewModel { Title = "Orange"     });
            List.Add(new ViewModel { Title = "Pineapple"  });
            List.Add(new ViewModel { Title = "Strawberry" });

            var listView = new ListView
            {
                RowHeight = 40, 
                ItemTemplate = new DataTemplate(typeof(CustomViewCell)),
                ItemsSource  = List
            };


            Content = listView;
        }
    }
}
使用Xamarin.Forms;
名称空间BountyApp.Pages
{
公共类视图模型
{
公共字符串标题{get;set;}
}
公共类StepperPage:ContentPage
{
公共ObservableCollection列表{get;set;}
公共步进页面()
{
列表=新的ObservableCollection();
添加(新视图模型{Title=“Apple”});
添加(新视图模型{Title=“Banana”});
添加(新视图模型{Title=“Graps”});
添加(新视图模型{Title=“Orange”});
添加(新视图模型{Title=“菠萝”});
添加(新视图模型{Title=“草莓”});
var listView=new listView
{
行高=40,
ItemTemplate=新数据模板(typeof(CustomViewCell)),
ItemsSource=列表
};
内容=列表视图;
}
}
}
结果


我邀请您阅读在线文档:如果您希望条目仅在用户单击某个项目时显示,请在创建列表单元格时隐藏它,并在需要时显示它。如果我将所有数据输入条目控制并提交,我如何知道哪个条目的数据是哪个标签的?你能帮我吗?