0

嗨,我正在做一个笔记应用程序,我已经将它连接到我的 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);
                }
            }
        }
    }

那么我必须更改什么或者我如何知道已单击/选择了哪个项目?

4

1 回答 1

1

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

<ListView SelectionChanged="noteListView_SelectionChanged">

然后在你的代码后面

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

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

于 2013-03-20T18:16:42.620 回答