我需要从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
为什么?
列表完美无缺。
答案 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());
}