Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml 如何在CollectionView中存储值_Xaml_Xamarin_Xamarin.forms_Binding - Fatal编程技术网

Xaml 如何在CollectionView中存储值

Xaml 如何在CollectionView中存储值,xaml,xamarin,xamarin.forms,binding,Xaml,Xamarin,Xamarin.forms,Binding,我有一个CollectionView列表,希望将每个项目设置为一个单独的值,单击该值时可以获得该值 但似乎没有这样的财产该怎么办 <CollectionView.ItemTemplate> <DataTemplate> <Grid Padding="5,5" HeightRequest="55"> <Grid.C

我有一个
CollectionView
列表,希望将每个项目设置为一个单独的值,单击该值时可以获得该值

但似乎没有这样的财产该怎么办

<CollectionView.ItemTemplate>
                    <DataTemplate>
                        <Grid Padding="5,5" HeightRequest="55">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="0.134*" />
                                <ColumnDefinition Width="0.489*" />
                                <ColumnDefinition Width="0.256*" />
                            </Grid.ColumnDefinitions>

                            <Grid.GestureRecognizers>
                                <TapGestureRecognizer CommandParameter="{Binding Id}" Tapped="Handle_Tapped" />
                            </Grid.GestureRecognizers>
                        </Grid>
                    </DataTemplate>
                </CollectionView.ItemTemplate>


我无法获取参数,请帮助。

当您单击某个项目时,默认情况下,事件参数会获取选定的数据,因此您不需要id即可获取,您只需执行以下操作:

 private void Handle_Tapped(object sender, System.EventArgs e)
    {
     var clickedData=(e as ItemTappedEventArgs).Item as YourDataType;

    }

其中,
YourDataType
是绑定到CollectionView的
类型

当您单击某个项目时,默认情况下,事件参数会获取所选数据,因此您不需要id即可获取所需的全部信息,如下所示:

 private void Handle_Tapped(object sender, System.EventArgs e)
    {
     var clickedData=(e as ItemTappedEventArgs).Item as YourDataType;

    }
其中,
YourDataType
是绑定到CollectionView的
类型

试试这个

private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
    {
        Grid h = sender as Grid;

        var m = h.BindingContext as YourModelType;

    }
试试这个

private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
    {
        Grid h = sender as Grid;

        var m = h.BindingContext as YourModelType;

    }

CollectionView
提供了一个
SelectedItem
bindable属性。您可以绑定到此属性,并在设置视图模型时在视图模型中执行所需的任何操作

如果您想继续使用事件,
CollectionView
还提供了一个
SelectionChanged
事件,该事件将在每次
SelectedItem
更改时触发,并将每次作为参数的一部分传递所选项


这两种方法中的任何一种都不需要为
CollectionView

CollectionView
中的每个视图单元格使用点击手势识别器,该视图提供了一个
SelectedItem
可绑定属性。您可以绑定到此属性,并在设置视图模型时在视图模型中执行所需的任何操作

如果您想继续使用事件,
CollectionView
还提供了一个
SelectionChanged
事件,该事件将在每次
SelectedItem
更改时触发,并将每次作为参数的一部分传递所选项


这两种方法中的任何一种都不需要为
CollectionView

中的每个视图单元安装点击手势识别器,如果您能向我展示您迄今为止所做的工作,我可以给您一个快速的提示solution@G.hakim请看代码。也许如果你能告诉我你到目前为止做了什么,我可以给你一个快速的提示solution@G.hakim请看代码。发送者是一个网格,这无关紧要。我不是在铸造发送者!作为您的代码,有一个异常对象引用未设置为对象的实例。您能否告诉我调试click Event时您得到了什么类型的事件参数?当我看到您提供的代码时,我自己找到了正确的代码。谢谢。@G.hakim发件人是一个网格,这无关紧要。我不是在铸造发件人!作为您的代码,有一个异常对象引用未设置为对象的实例。您能告诉我调试click Event时得到的事件参数类型吗?当我看到您提供的代码时,我自己找到了正确的代码。谢谢。@G.hakim