我已经定义了一个像这样的TextCell:
public partial class MyTextCell : TextCell
{
protected override void OnBindingContextChanged()
{
base.OnBindingContextChanged();
var item = BindingContext as CategoryGroupWordCountVM;
if (item != null)
{
this.Text = item.Name;
this.Detail = App.DB.GetTotalWordCountBySelectedCategories(item.Id).ToString();
this.StyleId = "disclosure";
}
}
}
我添加了一个像这样的添加点击事件:
section = new TableSection("Select from Available Categories");
foreach (var category in categoryGroups)
{
var cell = new CategoryGroupTextCell { BindingContext = category };
cell.Tapped += openCategoriesPage();
section.Add(cell);
}
}
tableView.Root.Add(section);
我有一个openCategoriesPage方法:
async void openCategoriesPage(object sender, ItemTappedEventArgs e)
{
if (e.Item == null) return;
var categoriesPage = new CategoriesPage();
var categoryGroup = e.Item as CategoryGroupWordCountVM;
((ListView)sender).SelectedItem = null;
await Navigation.PushAsync(categoriesPage);
}
但是我有一个问题,我得到一个错误说:
CategoryGroupPage.xaml.cs(36,36):错误CS7036:没有参数 给定对应于所需的形式参数' sender'的 ' CategoryGroupPage.openCategoriesPage(object,ItemTappedEventArgs)'
有人可以告诉我,如果我正确地打开下一页,还有什么可能是我错误的原因?
答案 0 :(得分:3)
您应该仅使用方法名称(没有括号)订阅Tapped事件,如下所示:
cell.Tapped += openCategoriesPage;
与执行以下操作相同:
cell.Tapped += new EventHandler(openCategoriesPage);
编译器将为两者生成相同的IL代码,但如果您希望将来取消订阅事件处理程序(您很可能会这样做),则第一个更有意义。