2013-03-20 162 views
0

嗨,我正在做一个笔记应用程序,我已经连接到我的SQL Azure数据库。 通过MobileServiceCollectionView自动填充项目。 轻敲一个项目后,应该打开一个detailView的权利...Win8 ListView点击不选择项目

我不知道为什么,但窃听项目不选择它,所以我无法检查noteListView_Tapped事件中的listView.SelectedItem .... 。

我的listview有什么问题?

<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> 

这里螺纹事件。它坠毁在TodoItem t = (TodoItem)lv.SelectedItem;

,所以我说如果条件现在什么也没有发生,除了调试打印。

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

为什么不直接在列表视图上使用SelectionChanged事件?

<ListView SelectionChanged="noteListView_SelectionChanged"> 
在后面

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

我认为(虽然我不知道),你的问题是,敲击的ListView,所以窃听事件,是不一样的选择你的代码

然后列表中的一个项目。