我有一个如下图所示的longlistselector。现在我想得到项目用户的文本。我搜索了很多,但找不到解决方案;( 注意图片请给出示例代码
http://amiryari.persiangig.com/image/stackoverflow-question.jpg
答案 0 :(得分:5)
1)连接LongListSelector控件上的SelectionChanged事件:
<phone:LongListSelector ItemsSource="{Binding MyListItems}"
SelectionChanged="LongListSelector_SelectionChanged">
2)从SelectionChangedEventArgs中的AddedItems集合中检索所选项目:
private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count > 0)
{
var item = e.AddedItems[0];
}
}
3)如果您的项目是对象,并且文本通过属性显示,那么您可以通过对象上的属性访问文本:
MyListItemObject item = e.AddedItems[0] as MyListItemObject;
MessageBox.Show(item.FullName);
如果您的列表绑定到字符串列表,那么它将只是AddedItems集合中的第一个项目:
string fullName = e.AddedItems[0].ToString();
MessageBox.Show(fullName);
答案 1 :(得分:0)
您始终可以侦听SelectionChanged
事件并获取字符串。如果您使用DataTemplate为列表中的项目设置样式,还有另一种方法。在DataTemplate中声明Tapped
事件,如下所示:
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ContactImage}"/>
<TextBlock x:Name="NameTextBlock" Text="{Binding ContactName}" Tapped="NameTextBlock_Tapped"/>
</StackPanel>
</DataTemplate/>
现在在我们的代码中:
private void LongListSelector_SelectionChanged(object sender, BlahBlah e)
{
var tb = sender as Textblock;
string cName = tb.Text; //This is the string you wanted.
MessageBox.Show(cName);
}