Элемент списка в Windows Phone 7 - PullRequest
2 голосов
/ 27 июля 2011

Я пытаюсь переместиться между 2 страницами .

Для просмотра страницы есть поле со списком, в котором я выбираю элемент, который будет перемещаться на «страницу с деталями».

Когда я нажимаю кнопку «Назад» на телефоне, он перемещается по мне из «страницы сведений» обратно в «просмотр страницы» .

Но в окне списка на «странице просмотра» отображается выделенный элемент, как выделено.

Как я могу обновить «страницу просмотра», чтобы в списке не было ничего выбранного.

Код для моей кнопки возврата ключа телефона "страница сведений":

private void PhoneApplicationPage_BackKeyPress(object sender,
                                               System.ComponentModel.CancelEventArgs e)
{

    string selectedFolderName = selectedFolderName2;

    NavigationService.Navigate(
        new Uri(
            "/DisplaySchedule.xaml?=selectedFolderName2" + selectedFolderName,
            UriKind.Relative));
}

Код для моей навигационной страницы "viewPage:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{

    base.OnNavigatedTo(e);
    selectedFolderName = "";

    if (NavigationContext.QueryString.TryGetValue("selectedFolderName", out selectedFolderName))
        selectedFolderName1 = selectedFolderName;


        IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();
        //For time
        try
        {
            StreamReader readFileTime = new StreamReader(new IsolatedStorageFileStream(selectedFolderName1 + "\\time.Schedule", FileMode.Open, myStore));
            //For title
            StreamReader readFileTitle = new StreamReader(new IsolatedStorageFileStream(selectedFolderName1 + "\\title.Schedule", FileMode.Open, myStore));
            //For category
            StreamReader readFileCategory = new StreamReader(new IsolatedStorageFileStream(selectedFolderName1 + "\\category.Schedule", FileMode.Open, myStore));


            String timeText = readFileTime.ReadLine();
            timeSplit = timeText.Split(new char[] { '^' });

            String titleText = readFileTitle.ReadLine();
            titleSplit = titleText.Split(new char[] { '^' });

            String categoryText = readFileCategory.ReadLine();
            categorySplit = categoryText.Split(new char[] { '^' });
        }
        catch (Exception)
        {
        }

        //Define grid column, size
        Grid schedule = new Grid();

        if (scheduleListBox.Items.Count == 0)
        {
            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(0, 20, 0, 0);
                //Set the column that will hold the title of the schedule
                Grid.SetColumn(titleTxtBlock, 1);

                schedule.Children.Add(titleTxtBlock);
            }

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



    private void scheduleListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //Get the value of selected index in scheduleListBox
        int selectedIndexOfSchedule = scheduleListBox.SelectedIndex;

        NavigationService.Navigate(new Uri("/ViewScheduleDetails.xaml?selectedIndexOfSchedule=" + selectedIndexOfSchedule + "&selectedFolderName1=" + selectedFolderName1, UriKind.Relative));
    }

Ответы [ 2 ]

0 голосов
/ 27 июля 2011

После выбора элемента просто снимите выделение.(См. Комментарии ниже в CAPS)

    private void scheduleListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //Get the value of selected index in scheduleListBox
        int selectedIndexOfSchedule = scheduleListBox.SelectedIndex;

        // RESET THE SELECTED INDEX/ITEM
        scheduleListBox.SelectedIndex = -1;
        // OR
        scheduleListBox.SelectedItem = null;

        NavigationService.Navigate(new Uri("/ViewScheduleDetails.xaml?selectedIndexOfSchedule=" + selectedIndexOfSchedule + "&selectedFolderName1=" + selectedFolderName1, UriKind.Relative));
    }
0 голосов
/ 27 июля 2011

просто отменить выбор?

myListBox.SelectedItem = -1;
...