我有一个长列表选择器,如下图所示。现在我想获取用户点击的项目的文本。我已经搜索了很多,但是找不到解决方案;(请注意图像请提供示例代码

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

有帮助吗?

解决方案

1)在LongListelector控制器上介绍选择的选择活动:

<phone:LongListSelector ItemsSource="{Binding MyListItems}"
                        SelectionChanged="LongListSelector_SelectionChanged">
.

2)从SeptoothChangedEventargs中的添加到图中的集合中检索所选项目:

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);
.

如果您的列表绑定到字符串列表,那么它将简单地是AddrafteMs集合中的第一个项目:

string fullName = e.AddedItems[0].ToString();
MessageBox.Show(fullName);
.

其他提示

您可以随时收听 SelectionChanged 事件并获取字符串。如果您使用 DataTemplate 来设置列表中项目的样式,还有另一种方法。宣布 Tapped DataTemplate 中的事件如下所示:

<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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top