我有一个for循环,可以在xaml.cs中循环出每个视图单元格。我在标签上添加了一个轻击手势,但我需要通过传入FilterName来区分点击的不同标签。
下面是我在TableView中循环输出单元格的代码
for (int m = 0; m < filterList.Count; m++) {
ViewCell vc = new ViewCell {
View = new StackLayout {
Orientation = StackOrientation.Horizontal,
HorizontalOptions = LayoutOptions.Start,
Children = {
new Label () {
Text = " " + filterList[m].filterName,
YAlign = TextAlignment.Center,
GestureRecognizers = {
new TapGestureRecognizer() {
Command = new Command(TapL_Tapped),
CommandParameter = filterList[m].filterName
}
}
},
new Image () {
Source = FileImageSource.FromFile("check_mark.jpg"),
HorizontalOptions = LayoutOptions.EndAndExpand
}
}
}
};
tableView.Root [0].Add (vc);
如何将filterList [m] .filterName传递给TapL_Tapped以将其用作字符串?我尝试使用命令参数,但我不确定它到底是做什么的。我试图谷歌如何使用这种方法传递一个变量,但无济于事,希望有人可以指导我?谢谢:))
以下是点击手势方法:
void TapL_Tapped() {
//to do events here
//can i pass in the string here?
}
答案 0 :(得分:0)
当您引用Command时,Execute函数通常接受对象参数。
操作
void TapL_Tapped(object parameter)
应该可行,但我目前没有快速测试项目。 CommandParameter应该通过。
查看此http://blogs.msdn.com/b/mikehillberg/archive/2009/03/20/icommand-is-like-a-chocolate-cake.aspx将向您展示命令的工作原理。
诸如MVVMLight之类的框架使用名为RelayCommand的类,它只实现了ICommand。
答案 1 :(得分:0)
我不认为这是最好的解决方案,但可以解决。
下面的“tableView.Root [0] .Add(vc);”,你可以把这行:
tableView.Root [0].Last().GestureRecognizers.Add(new TapGestureRecognizer() {
Command = new Command(TapL_Tapped),
CommandParameter = filterList[m].filterName
});
不要忘记删除已存在的“新TapGestureRecognizer”。
我希望我能帮到你。 拥抱!