当我搜索这个时,我得到了很多点击,但我最终陷入了 WPF 特定的兔子洞或类似的东西。我的环境是 Xamarin Forms Android/iOS/UWP。这是一个实验/教育项目,因此对解决方案没有完全“硬”要求。 ItemTappedEventArgs 为我提供了行的内容,而不是特定的项目或列。
问题是:如果用户点击 ListView ViewCell 中的特定项目,我如何确定他们点击了哪个特定列或控件?
这是相关的 Xaml:(RowStyle 只有 FontSize 和 Margin 等外观属性。)
true
谢谢!
答案 0 :(得分:0)
@Jason 和@Divyesh 有很好的建议。此外,手势识别器 Tapped 处理程序可以是列唯一的,并且可以传递我可以绑定到唯一标识行的值的 CommandParameter。
谢谢!将使用这些方法的某种组合。
答案 1 :(得分:0)
你可以像这里一样使用 SelectedItem
<ListView x:Name="dataList" ItemsSource="{Binding routeLabels}"
HasUnevenRows="True" Grid.Row="1" Grid.Column="0"
Grid.ColumnSpan="3" SelectedItem="{Binding SelectedItem}">
</ListView>
在视图模型中
private string _selectedItem;
public string SelectedItem {
get {return _selectedItem; }
set
{
_selectedItem = value;
// Additional code
}
}
使用 ItemTapped 您必须从 xaml.cs 页面处理它:
<ListView x:Name="dataList" ItemsSource="{Binding routeLabels}"
HasUnevenRows="True" Grid.Row="1" Grid.Column="0"
Grid.ColumnSpan="3" ItemSelected="Handle_ItemSelected" ItemTapped="MyItemTapped">
</ListView>
在代码后面
private async void MyItemTapped(object sender, ItemTapEventArgs e)
{
var content = e.Item as MyModel;
await Navigation.PushAsync(new somePage(content));
}