C# Xamarin表单向listview的每个项目添加输入字段
我是Xamarin表单的新手,我想在listview中每个项目的右侧添加一个输入字段(数字),这样我就可以为项目键入数量。比如一张购物清单,上面有你想要的数量 这是我的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.
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=列表
};
内容=列表视图;
}
}
}
结果
我邀请您阅读在线文档:如果您希望条目仅在用户单击某个项目时显示,请在创建列表单元格时隐藏它,并在需要时显示它。如果我将所有数据输入条目控制并提交,我如何知道哪个条目的数据是哪个标签的?你能帮我吗?