我正在使用.net standard 2.0为Android制作Xamarin应用,并且我要处理很多对象。我想为其添加一些视图,然后将它们添加到列表中,然后用户可以从中进行选择,然后检索选定的对象并打开一个更详细的视图。
哪种方法最好呢?到目前为止,我已经将它们放在一个列表视图中,并用字符串将几个属性缝合在一起,然后拆分选定的字符串并搜索匹配的对象,但这似乎真的很容易损坏,因为我不知道这些对象将具有什么值,直到运行时。
我想将它们添加到网格中,因为这似乎是自定义布局的最佳选择,是否可以将这些值添加到网格并将TapGestureRecognizer
附加到该行,并以某种方式存储和接收该行的选定对象?
答案 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
}
}