Getting selected value of listbox windows phone 7

最后都变了- 提交于 2019-12-12 02:03:05

问题


I am trying to get the selected value from a list box on the Windows Phone 7 platform. The data in my listbox is made up of three columns, consisting of 2 text blocks and 1 image object.

How should i put the code in the way that i can get the text (The data in any of the text block) of the selected one?

Below is my code for defining the grid:

        //Define grid column, size

        Grid schedule = new Grid();

        foreach (var time in timeSplit)
        {
            timeList = time;
            //Column 1 to hold the time of the schedule
            ColumnDefinition scheduleTimeColumn = new ColumnDefinition();
            GridLength timeGrid = new GridLength(110);
            scheduleTimeColumn.Width = timeGrid;
            schedule.ColumnDefinitions.Add(scheduleTimeColumn);

            //Text block that show the time of the schedule
            TextBlock timeTxtBlock = new TextBlock();
            timeTxtBlock.Text = time;
            //Set the alarm label text block properties - margin, fontsize
            timeTxtBlock.FontSize = 28;
            timeTxtBlock.Margin = new Thickness(0, 20, 0, 0);
            //Set the column that will hold the time of the schedule
            Grid.SetColumn(timeTxtBlock, 0);

            schedule.Children.Add(timeTxtBlock);
        }

        foreach (var title in titleSplit)
        {
            titleList = title;

            //Column 2 to hold the title of the schedule
            ColumnDefinition scheduleTitleColumn = new ColumnDefinition();
            GridLength titleGrid = new GridLength(500);
            scheduleTitleColumn.Width = titleGrid;
            schedule.ColumnDefinitions.Add(scheduleTitleColumn);

            //Text block that show the title of the schedule
            TextBlock titleTxtBlock = new TextBlock();

            if (title.Length > 10)
            {
                string strTitle = title.Substring(0, 10) + "....";
                titleTxtBlock.Text = strTitle;
            }
            else
            {
                titleTxtBlock.Text = title;
            }

            //Set the alarm label text block properties - margin, fontsize
            titleTxtBlock.FontSize = 28;
            titleTxtBlock.Margin = new Thickness(60, 20, 0, 0);
            //Set the column that will hold the title of the schedule
            Grid.SetColumn(titleTxtBlock, 1);

            schedule.Children.Add(titleTxtBlock);
            //scheduleListBox.Items.Add(schedule);
        }

        foreach (var category in categorySplit)
        {
            categoryList = category;

            //Column 3 to hold the image category of the schedule
            ColumnDefinition categoryImageColumn = new ColumnDefinition();
            GridLength catImgnGrid = new GridLength(70);
            categoryImageColumn.Width = catImgnGrid;
            schedule.ColumnDefinitions.Add(categoryImageColumn);

            TextBlock categoryTxtBlock = new TextBlock();
            categoryTxtBlock.Text = category;

            //set the category image and its properties - margin, width, height, name, background, font size
            Image categoryImage = new Image();
            categoryImage.Margin = new Thickness(-50, 15, 0, 0);
            categoryImage.Width = 50;
            categoryImage.Height = 50;
            if (category == "Priority")
            {
                categoryImage.Source = new BitmapImage(new Uri("/AlarmClock;component/Images/exclamination_mark.png", UriKind.Relative));
            }
            else
                if (category == "Favourite")
                {
                    categoryImage.Source = new BitmapImage(new Uri("/AlarmClock;component/Images/star_full.png", UriKind.Relative));
                }


            Grid.SetColumn(categoryImage, 2);
            schedule.Children.Add(categoryImage);
        }

        scheduleListBox.Items.Add(schedule);
    }

Code for selected value of listbox:

    string selectedName;

    private void scheduleListBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
    {
        //Get the value of selected value in scheduleListBox

        if (null != scheduleListBox.SelectedItem)
        {
            selectedName = (scheduleListBox.SelectedItem as ListBoxItem).Content.ToString();
        }
        MessageBox.Show("Selected name : " + selectedName);

    }

回答1:


ListBoxItem.Content is the Grid you added to ListBox.Items. Then you can access Grid.Children to get added TextBlocks, resp. their Text properties.

Above is a formal answer. On another note and despite your code containing lots of white spaces, I don't believe that it can work. For example you're adding several images (textblocks) into a single grid cell. Is that intended? I don't think so. Didn't you want to use listbox itm with just one date (is it a date?), one title and one image? If so, change your logic.




回答2:


ben tan !

you can get Tab of control :

Example:

string a = "abc"
grid myGrid = new grid();
myGrid.Tag = a;

when selectionChange you get Tab in control Grid ?



来源:https://stackoverflow.com/questions/6894108/getting-selected-value-of-listbox-windows-phone-7

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!