[英]How to access button click inside listview datatemplate in Xamarin.Forms?
[英]Passing a Command to a TextCell inside a DataTemplate in Xamarin.Forms
我有一个ListView,绑定到ViewModel的ItemsSource,并且这些项是一个自定义类(包含菜单的名称,图标和属于页面的Type,将在点击菜单点时启动)。
我发现可以将Command绑定到TextCell,并且我希望这样做。 但是就我而言,列表不是固定的,而是生成的,我还没有找到解决方案。
绑定中的ElementName不起作用,xmlns:local定义也不起作用。
有没有一种使用Command绑定的方法,还是我应该坚持使用ListView.ItemTapped事件?
将ICommand属性添加到列表中的每个项目:
public class ItemViewModel
{
public string MenuName { get; set; }
public string Icon { get; set; }
public Type PageType { get; set; }
public ICommand ItemTappedCommand { set; get; }
}
创建视图模型列表并设置命令以接收所需的参数作为参数;
public List<ItemViewModel> CreateItemsViewModel(List<Item> items)
{
var list = new List<ItemViewModel>();
foreach (var item in items)
list.Add(new ItemViewModel()
{
MenuName = item.MenuName,
Icon = item.Icon,
PageType = item.PageType,
ItemTappedCommand = new Command<Type>((type) =>
{
OpenPageOfType(type);
})
});
return list;
}
在XAML视图中,将必需的值作为命令参数传递;
<ListView ItemsSource="{Binding ItemsViewModel}" >
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding MenuName}"
Command="{Binding ItemTappedCommand}"
CommandParameter="{Binding PageType}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.