LongListSelector获取所选数据

时间:2014-12-15 11:27:28

标签: c# windows-phone-8 visual-studio-2013

我需要从longlistselector获取所选数据,但普通代码不起作用

XAML:

<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#:

    ObservableCollection<LongListData> listData = new ObservableCollection<LongListData>();
    listData.Add(new LongListData() { ImgText = "Imafsdfsge1", ImgUrl = new Uri("Assets/chart.png", UriKind.Relative) });     
MainLongListSelector.ItemsSource = listData;

但事件:

private void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            MessageBox.Show(MainLongListSelector.SelectedItem.ToString());
        } 

messagebox说:+ longlistdata

为什么?

列表完美无缺。

3 个答案:

答案 0 :(得分:0)

目前,如果您想要显示ToString()您需要执行的LongListData,请拨打ImgText所选项目的MainLongListSelector.SelectedItem.ImgText方法或者你可以覆盖ToString()方法并实现自己的逻辑。

答案 1 :(得分:0)

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

试试这个

var item = (sender as LongListSelector).SelectedItem as LongListData;
MessageBox.Show(item.SelectedItem.ImgText.ToString()); // output "Imafsdfsge1"

答案 2 :(得分:0)

您需要将selecteditem强制转换为您要绑定的自定义对象,

private void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var selecteditem = MainLongListSelector.SelectedItem as LongListData; 
            MessageBox.Show(selecteditem.ImgText.ToString());
        }