使用 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
}