2015-11-16 1 views
0

У меня есть цикл for, который будет вырезать каждую отдельную ячейку представления в xaml.cs. Я добавил жестов к ярлыку, но мне нужно различать разные метки, щелкнув их, перейдя в FilterName.Xamarin.forms передают переменную к жесту крана при запуске с использованием кода

Ниже мой код для выпетливания клеток в 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 [м] .filterName к TapL_Tapped, чтобы использовать его в виде строки? Я попытался с параметром команды, но я не уверен, что именно он делает. Я попытался Google, как передать переменную с помощью этого метода, но безрезультатно, надеюсь, что кто-то может мне помочь? Спасибо :)

Ниже приведен метод водопроводная жест:

void TapL_Tapped() { 
//to do events here 
//can i pass in the string here? 
} 

ответ

0

При ссылке на команду функция Execute обычно принимает параметр объекта.

делает

void TapL_Tapped(object parameter) 

должен работать, но я не быстрый проект, чтобы проверить на данный момент. Командный Параметр должен пройти.

Глядя на это http://blogs.msdn.com/b/mikehillberg/archive/2009/03/20/icommand-is-like-a-chocolate-cake.aspx покажет вам, как работают команды.

Рамки, такие как классы MVVMLight, называемые RelayCommand, которые только реализуют ICommand.

0

Я не думаю, что это лучшее решение, но может решить.

Ниже из "tableView.Root [0] .Add (ЖЕЛ);", вы можете поместить эти строки:

tableView.Root [0].Last().GestureRecognizers.Add(new TapGestureRecognizer() { 
              Command = new Command(TapL_Tapped), 
              CommandParameter = filterList[m].filterName 
}); 

И не забываем убрать "новый TapGestureRecognizer", которая уже существует ,

Надеюсь, я помог. Объятия!