Получение выбранного значения списка окон телефона 7 - PullRequest
0 голосов
/ 01 августа 2011

Я пытаюсь получить выбранное значение из списка на платформе Windows Phone 7.Данные в моем списке составлены из трех столбцов, состоящих из 2 текстовых блоков и 1 объекта изображения.

Как мне поместить код так, чтобы я мог получить текст (Данные в любом изтекстовый блок) выбранного?

Ниже приведен мой код для определения сетки:

        //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);
    }

Код для выбранного значения списка:

    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);

    }

Ответы [ 2 ]

1 голос
/ 01 августа 2011

ListBoxItem.Content - это Сетка, которую вы добавили в ListBox.Items. Затем вы можете получить доступ к Grid.Children, чтобы получить добавленные TextBlocks, соответственно. их текстовые свойства.

Выше приведен официальный ответ. С другой стороны, несмотря на то, что ваш код содержит много пробелов, я не верю, что он может работать. Например, вы добавляете несколько изображений (текстовых блоков) в одну ячейку сетки. Это предназначено? Я так не думаю. Разве вы не хотите использовать listbox itm только с одной датой (это дата?), Одним заголовком и одним изображением? Если это так, измените свою логику.

0 голосов
/ 01 августа 2011

Бен Тан!

Вы можете получить вкладку управления:

Пример:

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

при выделении, вы получаете вкладку в сетке управления?

...