Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LongListSelector C#-如何从分组数据列表中获取SelectedItem作为字符串-Windows Phone Silverlight 8.1_C#_List_Silverlight_Selecteditem_Longlistselector - Fatal编程技术网

LongListSelector C#-如何从分组数据列表中获取SelectedItem作为字符串-Windows Phone Silverlight 8.1

LongListSelector C#-如何从分组数据列表中获取SelectedItem作为字符串-Windows Phone Silverlight 8.1,c#,list,silverlight,selecteditem,longlistselector,C#,List,Silverlight,Selecteditem,Longlistselector,我正在用C#构建我的第一个WP Silverlight 8.1应用程序,所以还是个新手 我的应用程序中有一个LongListSelector,允许用户选择房间。当用户点击房间时,我希望房间名称(例如“N01”、“N07”、“N12”-请参见下面的代码!)以字符串形式存储 我将房间存储在一个分组列表中-列表“dataSource”绑定到LongListSelector(顺便说一句,它被称为“longListSelectorState”) 以下是我的列表C#代码: namespace WPLongL

我正在用C#构建我的第一个WP Silverlight 8.1应用程序,所以还是个新手

我的应用程序中有一个LongListSelector,允许用户选择房间。当用户点击房间时,我希望房间名称(例如“N01”、“N07”、“N12”-请参见下面的代码!)以字符串形式存储

我将房间存储在一个分组列表中-列表“dataSource”绑定到LongListSelector(顺便说一句,它被称为“longListSelectorState”)

以下是我的列表C#代码:

namespace WPLongListSelectorDemo
{
public partial class MainPage : PhoneApplicationPage
{
    List<RoomList> dataSource;
    // Constructor
    public MainPage()
    {

        InitializeList();
        InitializeComponent();
   List<RoomGroup<RoomList>> DataSource = RoomGroup<RoomList>.CreateGroups(dataSource,
            System.Threading.Thread.CurrentThread.CurrentUICulture,
            (RoomList s) => { return s.RoomName; }, true);
        longListSelectorState.ItemsSource = DataSource;
        // Sample code to localize the ApplicationBar
        //BuildLocalizedApplicationBar();
    }

    private void InitializeList()
    {
        dataSource = new List<RoomList>();
        //North Rooms - Classrooms
        dataSource.Add(new RoomList("N01", "North"));
        dataSource.Add(new RoomList("N02", "North"));
        dataSource.Add(new RoomList("N03", "North"));
        dataSource.Add(new RoomList("N04", "North"));
        dataSource.Add(new RoomList("N05", "North"));
        dataSource.Add(new RoomList("N06", "North"));
        dataSource.Add(new RoomList("N07", "North"));
        dataSource.Add(new RoomList("N08", "North"));
        dataSource.Add(new RoomList("N09", "North"));
        dataSource.Add(new RoomList("N10", "North"));
        dataSource.Add(new RoomList("N11", "North"));
        dataSource.Add(new RoomList("N12", "North"));
        dataSource.Add(new RoomList("N13", "North"));
        dataSource.Add(new RoomList("N14", "North"));
        dataSource.Add(new RoomList("N15", "North"));
        dataSource.Add(new RoomList("N16", "North"));
        dataSource.Add(new RoomList("N17", "North"));
        dataSource.Add(new RoomList("N18", "North"));
        dataSource.Add(new RoomList("N19", "North"));
        dataSource.Add(new RoomList("N20", "North"));
        dataSource.Add(new RoomList("N21", "North")); 
但是消息框只显示“WPLongListSelectorDemo.RoomList”作为SelectedItem。WPLongListSelector是名称空间,RoonList是列表名,所以我想这是有道理的,但这不是我想要的!例如,我想让它说‘N01’

如何从列表中将实际房间作为SelectedItem作为字符串获取


谢谢

我不知道分组列表到底是什么,但是如果您的RoomList类看起来像这样:

internal class RoomList
{
    public string Location { get; set; }
    public string ClassNumber { get; set; }
}
然后创建RoomList的新实例

RoomList selectedRoom  = new RoomList()
{
    Location = "north",
    ClassNumber = "n01"
}
调用selectedRoom.ToString()将得到“WPLongListSelectorDemo.RoomList”,因为您将类型本身转换为string(返回类型的名称空间和名称),而不是实例selectedRoom的string属性

相反,您应该这样做:

MessageBox.Show(selectedRoom .Location.ToString()) 

(在本例中,您甚至不需要ToString(),因为Location和ClassNumber都是字符串。)

您还可以重写RoomList的ToString()方法:

internal class RoomList
{
    public string Location { get; set; }
    public string ClassNumber { get; set; }

    public override string ToString()
    {
        return Location + ", " + ClassNumber;
    } 
}

在这种情况下,selectedRoom.ToString()将返回'north,n01'。

我不知道分组列表到底是什么,但是如果您的RoomList类看起来像这样:

internal class RoomList
{
    public string Location { get; set; }
    public string ClassNumber { get; set; }
}
然后创建RoomList的新实例

RoomList selectedRoom  = new RoomList()
{
    Location = "north",
    ClassNumber = "n01"
}
调用selectedRoom.ToString()将得到“WPLongListSelectorDemo.RoomList”,因为您将类型本身转换为string(返回类型的名称空间和名称),而不是实例selectedRoom的string属性

相反,您应该这样做:

MessageBox.Show(selectedRoom .Location.ToString()) 

(在本例中,您甚至不需要ToString(),因为Location和ClassNumber都是字符串。)

您还可以重写RoomList的ToString()方法:

internal class RoomList
{
    public string Location { get; set; }
    public string ClassNumber { get; set; }

    public override string ToString()
    {
        return Location + ", " + ClassNumber;
    } 
}
在这种情况下,selectedRoom.ToString()将返回'north,n01'