首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LongListSelector获取选定数据

LongListSelector获取选定数据
EN

Stack Overflow用户
提问于 2014-12-15 11:27:27
回答 3查看 71关注 0票数 0

我需要从长列表选择器获得选定的数据,但是普通代码不能工作。

xaml:

代码语言:javascript
复制
<phone:LongListSelector x:Name="MainLongListSelector" DataContext="{Binding listData}" IsGroupingEnabled="False" Grid.ColumnSpan="2" Margin="0,0,10,10" SelectionChanged="list_SelectionChanged">
                <phone:LongListSelector.ItemTemplate>
                    <DataTemplate>                        
                        <StackPanel Orientation="Horizontal">
                            <Image Source="{Binding ImgUrl}" Height="70" Stretch="Fill" Margin="0,0,10,10"/>
                            <StackPanel>
                                <TextBlock Text="{Binding ImgText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </phone:LongListSelector.ItemTemplate>
            </phone:LongListSelector>

c#:

代码语言:javascript
复制
    ObservableCollection<LongListData> listData = new ObservableCollection<LongListData>();
    listData.Add(new LongListData() { ImgText = "Imafsdfsge1", ImgUrl = new Uri("Assets/chart.png", UriKind.Relative) });     
MainLongListSelector.ItemsSource = listData;

但在事件发生时:

代码语言:javascript
复制
private void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            MessageBox.Show(MainLongListSelector.SelectedItem.ToString());
        } 

messagebox说:+longlistdata

为什么?

这份清单很完美。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-15 11:32:49

您需要将选择项强制转换到要绑定到的自定义对象,

代码语言:javascript
复制
private void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var selecteditem = MainLongListSelector.SelectedItem as LongListData; 
            MessageBox.Show(selecteditem.ImgText.ToString());
        } 
票数 0
EN

Stack Overflow用户

发布于 2014-12-15 11:31:46

当前,您正在调用所选项的ToString()方法,如果要显示需要执行MainLongListSelector.SelectedItem.ImgTextImgText,则该方法的类型为LongListData

或者您可以重写ToString()方法并实现您自己的逻辑。

票数 0
EN

Stack Overflow用户

发布于 2014-12-15 11:32:32

根据我的猜测,您希望在消息框中显示与图像相关的文本。即“Imafsdfsge1”

试一试

代码语言:javascript
复制
var item = (sender as LongListSelector).SelectedItem as LongListData;
MessageBox.Show(item.SelectedItem.ImgText.ToString()); // output "Imafsdfsge1"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27483005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档