点击集合视图项目中的图像以获取该项目的属性

Tap an image in a collection view item to get the attributes of that item

美好的一天, 我正在使用集合视图来查看 Xamarin Forms 中的用户地址列表,并且我在数据模板中有一个图像供用户点击以编辑任何所需的地址。请参见下面的代码。我的问题,当用户点击图片并显示在另一个页面进行编辑和保存时,如何获取地址详细信息。

 <CollectionView x:Name="addressCollectionList"
                                    SelectionMode="Single"
                                    SelectionChanged="addressCollectionList_SelectionChanged"
                                    Margin="15">
                        <CollectionView.ItemsLayout>
                            <LinearItemsLayout Orientation="Vertical"/>
                        </CollectionView.ItemsLayout>
                        <CollectionView.ItemTemplate>
                            <DataTemplate>
                                <Grid Padding="5">
                                <Frame BorderColor="#009688" CornerRadius="20">
                                <StackLayout Spacing="10" VerticalOptions="Center" Orientation="Horizontal">
                                <Label Text="{Binding addressName}"/>
                                        <Image Source="ic_edit.png" HorizontalOptions="EndAndExpand">
                                            <Image.GestureRecognizers>
                                                <TapGestureRecognizer x:Name="editAddress" Tapped="editAddress_Tapped"/>
                                               
                                            </Image.GestureRecognizers>
                                        </Image>
                                </StackLayout>
                                </Frame>
                             </Grid>
                            </DataTemplate>
                        </CollectionView.ItemTemplate>
                    </CollectionView>

根据您是否使用 MVVM,有两种方法

对于 MVVM

<TapGestureRecognizer Command="{Binding YourCommand}" CommandParameter={Binding .}/>

并喜欢

YourCommand= new Command<Type>((selectedItem)=>{

});

对于非 MVVM:

<TapGestureRecognizer Tapped="EditAddress_Tapped" CommandParameter={Binding .}/>

然后像这样得到它:

 private void EditAddress_Tapped(object sender, EventArgs e)
    {   
        var tappedEvgs = e as TappedEventArgs;
        var data = tappedEvgs.Parameter;
    }

祝你好运

您可以在后面的代码中通过findbyname 访问它。这将允许您访问与您按下的图像相关的标签。

为 xaml 中的标签命名:

  <Label x:Name="MyLabel" Text="{Binding addressName}"/>

然后在后面的代码中:

 private async void editAddress_Tapped(object sender, EventArgs e)
        {
            var SenderButton = (Image)sender;
            var _label = SenderButton.Parent.FindByName<Label>("MyLabel");
        }