如何在 Windows Phone Silverlight 中访问 ListBox 中的内部 ItemsControl
我正在构建一个小型 Windows Phone 应用程序,它有一个数据绑定 ListBox
作为主控件。该 ListBox
的 DataTemplate
是一个数据绑定 ItemsControl
元素,当用户点击 ListBox
元素时会显示该元素。
目前,我通过遍历应用程序的可视化树并在列表中引用它来访问它,然后通过 SelectedIndex
属性获取所选项目。
有没有更好或更有效的方法?
这个目前有效,但我担心它在列表较大的情况下是否仍然有效。
谢谢
I am building a small Windows Phone application which has a databound ListBox
as a main control. DataTemplate
of that ListBox
is a databound ItemsControl
element, which shows when a person taps on a ListBox
element.
Currently, I am accessing it by traversing the visual tree of the application and referencing it in a list, and than getting the selected item through SelectedIndex
property.
Is there a better or more effective way?
This one works currently, but I am afraid if it would stay effective in case of larger lists.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否尝试过连接 ListBox 的
SelectionChanged
事件?在后面的代码中:
Have you tried wiring the
SelectionChanged
event of the ListBox?With this in the code behind:
然后您可以使用 VisualTreeHelper 类来获取子项
另一种选择是使用 WP7 Toolkit 中提供的 GestureServices 类的服务。
您需要将 GestureListner 添加到 DataTemplate 的根元素,如下所示:
在 GestureListener_Tap 事件处理程序中,您使用此代码片段。
我不确定 GestureListner 如何在内部识别被点击的项目,但我猜它使用了 VisualTreeHelper,至少这个方法更简洁。
Then you can use the VisualTreeHelper class to get the sub items
Another option is to use services of the GestureServices class available in the WP7 Toolkit.
You'll need to add a GestureListner to the Root Element of your DataTemplate like so:
And in the GestureListener_Tap event handler, you use this snippet.
I'm not sure how the GestureListner recognize internally the item being tapped but I guess that it uses the VisualTreeHelper, at least this method is more concise.