【发布时间】:2019-10-17 16:53:34
【问题描述】:
我有一个普通的 XAML 页面,其中包含一个具有 4 列的 ListView。 首先,我创建一个定义列的网格,例如:
<Grid x:Name="gFirst" BackgroundColor="#4682B4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
</Grid.RowDefinitions>
<StackLayout x:Name="slImage" Orientation="Horizontal" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Grid.Column="0" Grid.Row="0" IsVisible="False">
<Label Text="" FontFamily="Trebuchet MS" FontSize="16" TextColor="White"/>
</StackLayout>
<StackLayout Orientation="Horizontal" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Grid.Column="1" Grid.Row="0">
<Label Text="Mieter / Strasse" FontFamily="Trebuchet MS" FontSize="16" Margin="20,0,0,0" TextColor="White"/>
</StackLayout>
<StackLayout Orientation="Horizontal" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Grid.Column="2" Grid.Row="0">
<Label Text="Vertragsbeginn" FontFamily="Trebuchet MS" FontSize="16" TextColor="White"/>
</StackLayout>
<StackLayout x:Name="sl3" Orientation="Horizontal" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Grid.Column="3" Grid.Row="0" IsVisible="False">
<Label Text="Vertragsende" FontFamily="Trebuchet MS" FontSize="16" TextColor="White"/>
</StackLayout>
</Grid>
然后我有一个 ListView:
<ListView x:Name="lv" RowHeight="70">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell Appearing="ViewCell_Appearing">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding ColumnWidthImg}" />
<ColumnDefinition Width="{Binding ColumnWidth}" />
<ColumnDefinition Width="{Binding ColumnWidthSec}"/>
<ColumnDefinition Width="{Binding ColumnWidthThird}"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackLayout Orientation="Vertical" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Grid.Column="0" Grid.Row="0" IsVisible="{Binding VisibleColumn}">
<Image Source="{Binding ImgSource}" WidthRequest="30" HeightRequest="30">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
</StackLayout>
<StackLayout Orientation="Vertical" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Grid.Column="1" Grid.Row="0" Margin="20,0,0,0">
<Label Text="{Binding Test1}" FontFamily="Trebuchet MS" FontSize="16" TextColor="Black" />
<Label Text="{Binding Test4}" FontFamily="Trebuchet MS" FontSize="16" TextColor="Black" />
</StackLayout>
<StackLayout Orientation="Vertical" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Grid.Column="2" Grid.Row="0">
<Label Text="{Binding Test2}" FontFamily="Trebuchet MS" FontSize="16" TextColor="Black" />
</StackLayout>
<StackLayout Orientation="Vertical" VerticalOptions="Center" HorizontalOptions="FillAndExpand" Grid.Column="3" Grid.Row="0" IsVisible="{Binding VisibleColumn}">
<Label Text="{Binding Test3}" FontFamily="Trebuchet MS" FontSize="16" TextColor="Black" />
</StackLayout>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我现在的问题是,如何检测列表视图中点击的图像的位置? 使用图像中的点击事件,我无法获得位置。
ListView 中的 ItemTapped 事件给我点击项的对象,但不给我点击的列。
我该如何解决这个问题?
谢谢。
【问题讨论】:
-
你能解释一下:你的意思是位置:行,网格的列吗?是否触发了图像的点击事件
-
Image 的 Tap 事件被触发了。在这个 Tap 事件中,我想得到,ListView 的哪一行被点击了。
-
你尝试过 ListView 上的 ItemSelected 事件
-
是的,但在这个事件中,我不知道点击了哪一列。
-
问:需要grid.column吗?
标签: listview xamarin.forms multiple-columns