【发布时间】:2022-03-14 09:48:45
【问题描述】:
当我搜索这个时,我得到了很多点击,但我最终进入了 WPF 特定的兔子洞或类似的东西。
我的环境是 Xamarin Forms Android、iOS 和 UWP。这是一个实验/教育项目,因此对解决方案没有完全“硬”的要求。 ItemTappedEventArgs 给了我行的内容,而不是具体的项目或列。
如果用户点击 ListView ViewCell 中的特定项目,我如何确定他们点击了哪个特定列或控件?
以下是相关的 XAML 内容(RowStyle 仅具有 FontSize 和 Margin 等外观属性):
<ListView ItemsSource="{Binding CodeTable}" Margin="0, 0, 0, 0" SelectionMode="Single" ItemTapped="OnListViewItemTapped" x:Name="ListViewCodeTable" >
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:CodeTableRow">
<ViewCell >
<Grid BackgroundColor="Khaki" VerticalOptions="Start" MinimumHeightRequest="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Text ="{Binding Decimal}" Style="{StaticResource RowStyle}" />
<Label Grid.Column="1" Text ="{Binding Hex}" Style="{StaticResource RowStyle}" />
<Label Grid.Column="2" Text ="{Binding Ascii}" Style="{StaticResource RowStyle}" FontAttributes="{Binding AttribAscii}" />
etc.
【问题讨论】:
-
ItemTapped 在单元级别运行。如果您想在单元格内点击,请将手势识别器添加到该特定元素
-
ListView 具有 SelectedItem 属性,您将获得其中被点击的项目的值
-
@Divyesh_08 在 Android 上似乎 SelectedItem 没有在 Tapped 事件中填充,但我能够适当地投射发件人并从那里获取我需要的信息。