Vb.net 为什么LongListSelectedItem什么都没有?

Vb.net 为什么LongListSelectedItem什么都没有?,vb.net,windows-phone-8,windows-phone,Vb.net,Windows Phone 8,Windows Phone,我不确定我试图实现的目标是否正确 在Windows Phone 8上,我希望应用程序执行以下操作: 屏幕1:在列表a、B、C、D等中显示字母表 屏幕2:当用户从屏幕1中的列表中选择一个项目时,屏幕2将显示名称以该字母开头的客户,它将联系web服务并按所选字符获取项目 屏幕3:从屏幕2选择名称将再次显示该客户的详细信息。它将联系web服务并通过所选名称获取详细信息 因此,我从以下教程开始 这将按预期显示列表,但在选择项目时,SelectionChanged事件不会生效。仔细研究一下,你似乎无法使用

我不确定我试图实现的目标是否正确

在Windows Phone 8上,我希望应用程序执行以下操作:

屏幕1:在列表a、B、C、D等中显示字母表

屏幕2:当用户从屏幕1中的列表中选择一个项目时,屏幕2将显示名称以该字母开头的客户,它将联系web服务并按所选字符获取项目

屏幕3:从屏幕2选择名称将再次显示该客户的详细信息。它将联系web服务并通过所选名称获取详细信息

因此,我从以下教程开始

这将按预期显示列表,但在选择项目时,SelectionChanged事件不会生效。仔细研究一下,你似乎无法使用LongListSelector来选择被点击的字母字符。所以我使用了tap事件,但是SelectedItem总是空的

Private Sub LLSAlpha_SelectionChanged(sender As Object, e As SelectionChangedEventArgs)
    If LLSAlpha Is Nothing Then
        If LLSAlpha.SelectedItem.ToString = "A" Then
            MessageBox.Show("A was selected")
        End If
    End If
End Sub
现在我在某个地方读到,我必须使用navigateURL方法,但我无法获得正确的事件—允许我针对点击/选择的项目编写代码的事件

我是否遗漏了什么,或者我应该使用另一个控件来实现我试图做的事情?有我可以参考的文章吗?感谢您的帮助

编辑:

我的XAML是

<phone:LongListSelector x:Name="LLSAlpha" LayoutMode="Grid" GridCellSize="200,200" 
                                ItemTemplate="{StaticResource AlphaTemplate}" ItemsSource="{Binding Listpictures}" 
                                IsGroupingEnabled="True" GroupHeaderTemplate="{StaticResource groupHeaderTemplate}" 
                                JumpListStyle="{StaticResource imageJumpListStyle}"
                                SelectionChanged="LLSAlpha_SelectionChanged"/>

终于解决了这个问题。这是我使用的代码

现在向LLS添加ItemTemplates和DataTemplate,最后添加TextBlock以显示值

然后,要导航到另一个页面,请在从C转换的LLS代码的SelectionChanged事件下输入以下代码

If LLS.SelectedItem Is Nothing Then
Return

NavigationService.Navigate(New URI("Page.xaml?Item=" & TryCast(LLS.SelectedItem,     CustomerItem).ID, UriKind.Relative))

LLS.SelectedItem = Nothing
End If
在接收项目的页面上,在OnNavigatedTo下

If DataContext Is Nothing
Dim SelectedIndex as string 

If NavigationContext.QueryString.TryGetValue("Item", SelectedIndex)
dim Index as Integer= Cint.Parse(SelectedIndex)

'Do whatever you want here

End If

End If

我在安装SDK时遇到了一些问题,无法在这方面花费更多的时间,这就是为什么我删除了我的答案,虽然它解决了您的一般问题,但没有提供您正在寻找的具体答案。所有基于.NET的开发都是等效的:通过设计视图创建给定的控件,并像您那样设置事件。在访问任何属性之前,请确保该属性不为null或IsNothing;原则上,控制LLSAlpha不应为空;但是如果是这种情况,您也应该检查它:两个不同的条件,一个用于控件…如果LLSAlpha不是空的,那么在它内部,在调用任何方法之前,一个用于给定元素,比如字符串:LLSAlpha.SelectedItem不是空的。如果您不确定如何操作,最好使用VB.NET语言编写代码。请记住,VB.NET和C中的事件管理是不同的。原则上,遵循MSDN示例一步一步地进行操作不会发现任何问题;不幸的是,我无法测试您的确切条件,也无法判断您做错了什么。是的,我认为为了安装SDK,您需要满足一些标准。谢谢你的尝试,但我相信我已经尝试了你的建议,即使LLS选择器不是空的,那么selectedItem总是空的。。。。好的,我将对一个正在工作的VB.Net示例进行演练,看看这是否有什么启示。在这种情况下,您的代码也没有任何意义:您必须正确地编写代码在两个级别上都不是什么都没有。如果代码没有通过,您必须查看在创建控件、填充控件或选择项时出错的地方,但您不能编写无意义的代码:如果LLSAlpha为Nothing,则您的语句没有任何意义:它肯定会触发错误。如果你不知道自己做错了什么,那就一步一步地把事情做好:第一步;把这些胡说八道转化为合乎逻辑的东西:不是什么都没有,然后重复这一点。PS:只是为了让这一点完全清楚。我的回答是正确的:你必须改变什么都不是,什么都不是。但是你想要的是理解为什么你不能创建一个简单的手机应用程序,尽管我想通过遵循MSDN的指示,这应该或多或少是容易的,但你不能确定。总而言之:纠正你的错误毫无疑问是错误的,并开始查看其他部分以找出selectedItem为空的原因;但最好在改变这种情况后再这样做,以避免错误的累积。