嗨,所以我正在做一个笔记应用程序,我已将它连接到我的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);
}
}
}
}
那么我需要更改什么或如何知道已点击/选择了哪个项目?
答案 0 :(得分:1)
为什么不在listview上使用SelectionChanged事件?
<ListView SelectionChanged="noteListView_SelectionChanged">
然后在你的代码中
private void noteListView_SelectionChanged(object sender, RoutedEventArgs e)
{
if((sender as ListView).Items.Count > 0)
{
.....
}
}
我认为(虽然我不确定)你的问题是点击listView,因此点击事件与选择列表中的项目不同。