如何在Xamarin表单的视图中添加和检索列表?

时间:2019-02-03 13:49:45

标签: c# object xamarin xamarin.forms

我正在使用.net standard 2.0为Android制作Xamarin应用,并且我要处理很多对象。我想为其添加一些视图,然后将它们添加到列表中,然后用户可以从中进行选择,然后检索选定的对象并打开一个更详细的视图。

哪种方法最好呢?到目前为止,我已经将它们放在一个列表视图中,并用字符串将几个属性缝合在一起,然后拆分选定的字符串并搜索匹配的对象,但这似乎真的很容易损坏,因为我不知道这些对象将具有什么值,直到运行时。

我想将它们添加到网格中,因为这似乎是自定义布局的最佳选择,是否可以将这些值添加到网格并将TapGestureRecognizer附加到该行,并以某种方式存储和接收该行的选定对象?

1 个答案:

答案 0 :(得分:0)

如果使用ICommand,则可以简单地实现TapGestureRecognizer。 首先像这样在XAML文件中创建GridView:

<Grid>
  <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*"/>
      <ColumnDefinition Width="*"/>
  </Grid.ColumnDefinitions>
  <Label Text = "{Binding @something}" GridRow = 0 GridColumn = 0/>
  <Grid.GestureRecognizers>
      <TapGestureRecognizer Command="{Binding TapCommand}"/>
  </Grid.GestureRecognizers>
</Grid>

之后,在c#代码中设置绑定,如下所示:

var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.SetBinding (TapGestureRecognizer.CommandProperty, "TapCommand");
grid.GestureRecognizers.Add(tapGestureRecognizer);

然后您应该执行以下命令:

public class TapViewModel : INotifyPropertyChanged
{
  ICommand tapCommand;

  public TapViewModel () 
  {
    tapCommand = new Command (OnTapped);
  }

  public ICommand TapCommand 
  {
    get { return tapCommand; }
  }

  void OnTapped (object s)
  {
    //DO whatever you want
  }

}