点击集合视图项目中的图像以获取该项目的属性
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");
}
美好的一天, 我正在使用集合视图来查看 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");
}