我需要从长列表选择器获得选定的数据,但是普通代码不能工作。
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
为什么?
这份清单很完美。
发布于 2014-12-15 11:32:49
您需要将选择项强制转换到要绑定到的自定义对象,
private void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var selecteditem = MainLongListSelector.SelectedItem as LongListData;
MessageBox.Show(selecteditem.ImgText.ToString());
} 发布于 2014-12-15 11:31:46
当前,您正在调用所选项的ToString()方法,如果要显示需要执行MainLongListSelector.SelectedItem.ImgText的ImgText,则该方法的类型为LongListData。
或者您可以重写ToString()方法并实现您自己的逻辑。
发布于 2014-12-15 11:32:32
根据我的猜测,您希望在消息框中显示与图像相关的文本。即“Imafsdfsge1”
试一试
var item = (sender as LongListSelector).SelectedItem as LongListData;
MessageBox.Show(item.SelectedItem.ImgText.ToString()); // output "Imafsdfsge1"https://stackoverflow.com/questions/27483005
复制相似问题