使用 DataTemplate 检测在 ListView 中单击了哪个项目
Detecting which item was clicked in a ListView with a DataTemplate
我有一个带有简单数据模板的 ListView - 一个图像和一个文本。
List<MenuItem> Items = new List<MenuItem> {
new MenuItem ("TRADE","menuTradeIconBig.png"),
new MenuItem ("PROFILE","menuProfileIconBig.png"),
};
var listView = new ListView ();
var viewTemplate = new DataTemplate(typeof(MenuCell)); //MenuCell contains a grid
listView.ItemTemplate = viewTemplate;
listView.ItemsSource = Items;
如果 ListView 中填充的是字符串,我可以很容易地做到这一点:
listView.ItemTapped += (sender, e) =>
{
MenuHandler(e.Item.ToString()); //My function to process item clicks
};
但是现在,当我使用它时,转换为 ToString() 的响应是 "MyProjectName.MenuItem"。
如何获取点击的商品?
我想通了:
listView.ItemTapped += (sender, e) =>
{
MenuHandler((MenuItem)e.Item);
};
public void MenuHandler(MenuItem item)
{
MenuItem selected = item;
//do whatever you want with the object
}
我有一个带有简单数据模板的 ListView - 一个图像和一个文本。
List<MenuItem> Items = new List<MenuItem> {
new MenuItem ("TRADE","menuTradeIconBig.png"),
new MenuItem ("PROFILE","menuProfileIconBig.png"),
};
var listView = new ListView ();
var viewTemplate = new DataTemplate(typeof(MenuCell)); //MenuCell contains a grid
listView.ItemTemplate = viewTemplate;
listView.ItemsSource = Items;
如果 ListView 中填充的是字符串,我可以很容易地做到这一点:
listView.ItemTapped += (sender, e) =>
{
MenuHandler(e.Item.ToString()); //My function to process item clicks
};
但是现在,当我使用它时,转换为 ToString() 的响应是 "MyProjectName.MenuItem"。
如何获取点击的商品?
我想通了:
listView.ItemTapped += (sender, e) =>
{
MenuHandler((MenuItem)e.Item);
};
public void MenuHandler(MenuItem item)
{
MenuItem selected = item;
//do whatever you want with the object
}