如何在ListView中获取单击的项目

Ixx*_*Ixx 6 c# xaml windows-8

这应该是一个微不足道的任务,但我找不到如何做到这一点.我想听一下listview中的项目,获取相应的模型对象,然后启动一个新屏幕.

这是ListView的XAML:

<ListView x:Name="ItemListView" 
    ItemTemplate="{StaticResource StoreFrontTileTemplate}"
    ItemContainerStyle="{StaticResource StoreFrontLVTileStyle}"
    Margin="0" VerticalAlignment="Top" ItemClick="MyClick" Tapped="MyTap"/>
Run Code Online (Sandbox Code Playgroud)

而MyClick,MyTap:

private void MyClick(object sender, ItemClickEventArgs e)
{
    Debug.WriteLine("Click!");
}

private void MyTap(object sender, TappedRoutedEventArgs e)
{
    Debug.WriteLine("TAp!!" + sender.ToString() + "--" + e.ToString());
}
Run Code Online (Sandbox Code Playgroud)

导航到新屏幕的方法:

this.Frame.Navigate(typeof(SecondScreen));
Run Code Online (Sandbox Code Playgroud)

它工作,但我需要点击项目的模型对象,并将其作为参数传递给第二个屏幕.

但MyClick永远不会被调用,MyTap也不会向我提供有关所点击项目的任何信息."sender"是ListView.

我下载了这些exaples:

http://code.msdn.microsoft.com/windowsapps/XAML-ListView-sample-pack-0ec6b60f

但它不包含我需要的东西,有一个主/细节视图,但它适用于绑定,我想要做的是启动一个完整的新屏幕.

注意:我是Windows开发中的菜鸟,并且采用通常的方式在Android或IOS中执行此操作,您可以使用单击元素的位置实现回调.不知道在Windows 8中正确的方法.

nem*_*esv 27

你可以使用这个SelectionChanged活动:

<ListView x:Name="ItemListView" SelectionChanged="MySelectionChanged" />
Run Code Online (Sandbox Code Playgroud)

您可以从以下选项中获取所选/已取消的项目SelectionChangedEventArgs:

private void MySelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Debug.WriteLine("Selected: {0}", e.AddedItems[0]);
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您不需要选择功能以及要使用的内容ItemClick="MyClick" ,则需要设置IsItemClickEnabledtrue:

获取或设置一个值,该值指示视图中的项是否引发ItemClick事件以响应交互.

<ListView x:Name="ItemListView" 
    ItemTemplate="{StaticResource StoreFrontTileTemplate}"
    ItemContainerStyle="{StaticResource StoreFrontLVTileStyle}"
    Margin="0" VerticalAlignment="Top" ItemClick="MyClick"  
    IsItemClickEnabled="bool" SelectionMode="None"/>
Run Code Online (Sandbox Code Playgroud)

请注意,在这种情况下,您还需要设置SelectionModeNone.

  • 如何获取点击项目的索引? (3认同)