如何获取单击的ListView项目

Mat*_*hew 1 c# xaml listview windows-phone-8.1

我在点击项目时遇到问题 ListView

MainPage.xaml中

 <ListView 
                    ReorderMode="Disabled"
                    SelectionMode="Single"
                    IsItemClickEnabled="True"
                    ItemClick="Section_ItemClick"
                    ContinuumNavigationTransitionInfo.ExitElementContainer="True">

                    <ListViewItem Margin="0,0,0,10" Background="LightGray">
                        <StackPanel Orientation="Horizontal">
                            <Image Source="/Assets/Icons/1.png" Width="94" Height="94"/>
                            <TextBlock x:Uid="1" />
                        </StackPanel>
                    </ListViewItem>

                    ...
</ListView>
Run Code Online (Sandbox Code Playgroud)

MainPage.xaml.cs中

private async void Section_ItemClick(object sender, ItemClickEventArgs e)
    {
        ListViewItem itemId = ((sender as ListView).SelectedItem as ListViewItem);

        if (itemId != null)
        {
            .. do something ..
        }
        else
        {
            throw new Exception(this.resourceLoader.GetString("NavigationFailedExceptionMessage"));
        }
    }
Run Code Online (Sandbox Code Playgroud)

编辑**

在进一步的测试,我发现,这两个sendere是空的事件触发时?

Mat*_*hew 6

好的,这解决了(最后).使用SelectionChanged事件,并通过分配每个ListViewItem名称x:Name

MainPage.xaml中

<ListView 
                    x:Name="SettingsHub"
                    ReorderMode="Disabled"
                    SelectionChanged="SettingsHub_SelectionChanged"
                    ContinuumNavigationTransitionInfo.ExitElementContainer="True">
      ...
</ListView>
Run Code Online (Sandbox Code Playgroud)

MainPage.xaml.cs中

private void SettingsHub_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.AddedItems.Count > 0)
        {
            var itemId = (e.AddedItems[0] as ListViewItem).Name;
        }            
    }
Run Code Online (Sandbox Code Playgroud)