Win8 ListView Tap不选择项目

时间:2013-03-20 15:12:30

标签: c# xaml listview windows-8

嗨,所以我正在做一个笔记应用程序,我已将它连接到我的SQL Azure数据库。 这些项目通过MobileServiceCollectionView自动填充。 点击一个项目后,应该向右侧打开detailView ...

我不知道为什么但是点击一个项目不会选择它,所以我无法检查noteListView_Tapped事件中的listView.SelectedItem .....

我的列表视图出了什么问题?

<ListView x:Name="noteListView" Margin="20,0,0,0" Tapped="noteListView_Tapped">
 <ListView.ItemTemplate>
  <DataTemplate>
   <StackPanel Orientation="Horizontal" Margin="2">

     <CheckBox x:Name="CheckBoxComplete" IsChecked="{Binding Complete, Mode=TwoWay}" Checked="CheckBoxComplete_Checked" Padding="3"/>
     <TextBlock x:Name="TextBlockTodoItem" Text="{Binding Title}" Padding="3" />

   </StackPanel>
  </DataTemplate>
 </ListView.ItemTemplate>
</ListView>

这里是Tapped事件..它在TodoItem t = (TodoItem)lv.SelectedItem;

上崩溃了

所以我添加了if条件,现在没有任何事情发生,除了调试打印。

private void noteListView_Tapped(object sender, TappedRoutedEventArgs e)
    {
        Debug.WriteLine("0");
        ListView lv = (ListView)sender;
        if (lv.Items.Count > 0)
        {
            if (lv.SelectedItems.Count > 0)
            {
                TodoItem t = (TodoItem)lv.SelectedItem;
                Debug.WriteLine("1");
                Debug.WriteLine(t.Title);
                try
                {
                    Location l = TodoItem.StringToLocation(t.LocationTaken);
                    Debug.WriteLine("2");
                    MapLayer.SetPosition(locationIcon, l);
                    map.SetView(l, 15.0f);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Map set position failed.: " + ex.Message);
                }
            }
        }
    }

那么我需要更改什么或如何知道已点击/选择了哪个项目?

1 个答案:

答案 0 :(得分:1)

为什么不在listview上使用SelectionChanged事件?

<ListView SelectionChanged="noteListView_SelectionChanged">

然后在你的代码中

private void noteListView_SelectionChanged(object sender, RoutedEventArgs e)
{
    if((sender as ListView).Items.Count > 0)
    {
        .....
    }
}

我认为(虽然我不确定)你的问题是点击listView,因此点击事件与选择列表中的项目不同。