0

我正在使用 C# 开发一个小型 Windows 商店应用程序,其中使用以下代码片段填充了列表框的内容。

代码1:将歌曲标题作为项目添加到列表框中,使用Song创建项目

    private void addTitles(string title, int value) 
    {
        Song songItem = new Song(); 
        songItem.Text = title;
        songItem.Value = value;
        listbox1.Items.Add(songItem); // adds the 'songItem' as an Item to listbox
    }

代码 2:用于为每个项目设置值的歌曲('songItem')

public class Song
{
    public string Text { get; set; }
    public int Value { get; set; }
    public override string ToString()
    {
        return Text;
    }
}

列表框的填充内容当前正在运行。

我想要的是在运行时获取 Click 事件中每个项目的“值”。

为此,如何在 C#中读取(提取)列表框中所选项目的值?(值是 songItem.Value)

代码 3:我已经尝试过这段代码,试图找出解决方案,但它没有用

 private void listbox1_tapped(object sender, TappedRoutedEventArgs e)
        {
           Int selectedItemValue = listbox1.SelectedItem.Value();
        }

因此,如果有人可以帮助我,我将非常感激,因为我是一名业余爱好者。

4

3 回答 3

4

不确定“TappedRoutedEventArgs”,但我会

private void listbox1_tapped(object sender, TappedRoutedEventArgs e)
        {
           var selectedSong = (Song)listbox1.SelectedItem;
           if (selectedSong != null) {
              var val = selectedSong.Value;
              }
        }

因为SelectedItem是一个Object(它不知道该Value属性),所以你必须将它转换为Song第一个。

顺便说一句,Value是 a property,而不是 a method,所以你不需要括号。

于 2013-08-19T20:15:06.190 回答
0

尝试这样的事情:

if (listbox1.SelectedRows.Count>0){
      Song song=(Song)listbox1.SelectedItem;
  int value=song.Value;
}
于 2013-08-19T20:17:25.763 回答
0

试试这样:

Song song=listbox1.SelectedItem as Song;

或这个:

 var selected = listbox1.SelectedValue as Song;
于 2013-08-19T20:14:12.727 回答