如何在Win8中将LongListSelector SelectedItem作为字符串

时间:2013-11-15 22:35:35

标签: c# windows-phone-8 longlistselector

我有一个如下图所示的longlistselector。现在我想得到项目用户的文本。我搜索了很多,但找不到解决方案;( 注意图片请给出示例代码

http://amiryari.persiangig.com/image/stackoverflow-question.jpg

2 个答案:

答案 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);
}