locked
Передача параметров на страницу RRS feed

  • Вопрос

  •  Здравствуйте!
    Возникла проблема с передачей параметра,а именно ссылки.
    Я парсю страницу с новостями и вытаскиваю ссылки и заношу их в  List<News> list = new List<News>()

    foreach (HtmlNode l in LinkState)
                    {
                        
                        string url = l.GetAttributeValue("href", string.Empty);
                        Ls.Add("http://www.site.ru" + url);
                    }
    
                }
                List<News> list = new List<News>();
    
                for (int y = 0; y < Nm.Count; y++)
                {
                    list.Add(new News
                    {
                        Title = Nm[y],
                        Text = Ts[y],
                        Image = new BitmapImage(new Uri(Is[y])),
                        Link=Ls[y]
                    });
    
                }
                ListBox.ItemsSource = list;

    В программе когда я выбираю статью у меня переходит на др.страницу,но не получается на нее передать Link=Ls[y].

    На другой странице есть обработчик переданных параметров и он выводит в MessageBox только Ls[y].

    protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                base.OnNavigatedTo(e);
                string Link;
                NavigationContext.QueryString.TryGetValue("Link", out Link);
    
                if(!String.IsNullOrEmpty(Link))
                {
                    MessageBox.Show(String.Format("{0}",Link));
                }
            }
    Сама передача параметра:
    private void NewsBlog(object sender, SelectionChangedEventArgs e)
            {
                if (e.AddedItems.Count <= 0) return;
                
                NavigationService.Navigate(new Uri("/News.xaml?Link=Ls[y]", UriKind.RelativeOrAbsolute));
            }


    Помогите разобраться пожалуйста.
    • Изменено xero-rock 2 января 2013 г. 7:34
    2 января 2013 г. 7:31

Ответы

  • 2xero-rock

    Я имел ввиду строчку

    List<News> list = new List<News>();

    вынести из метода, в котором два цикла foreach (поместить перед заголовком этого метода или в самом начале класса). Тем самым list станет переменной класса и будет видна в методе NewsBlog.

    Область видимости - одно из базовых понятий, так что про это написано очень много: Область видимости

    • Помечено в качестве ответа xero-rock 8 января 2013 г. 17:13
    8 января 2013 г. 12:48

Все ответы

  • 2xero-rock

    Передавайте параметр через String.Format():

    NavigationService.Navigate(new Uri(String.Format("/News.xaml?Link={0}", Ls[y]), UriKind.Relative));

    4 января 2013 г. 13:55
  • Ошибки выдает:
    1)Имя "y" отсутствует в текущем контексте 

    2) Имя "Ls" отсутствует в текущем контексте 

    4 января 2013 г. 19:50
  • 2xero-rock

    Исходя из того кода, что я вижу, могу посоветовать расширить область видимости списка list (вынести его объявление из метода с циклами), а индекс брать из свойства SelectedIndex ListBox'а, т.е. передавать параметр так:

    var listBox = sender as ListBox;
    NavigationService.Navigate(new Uri(String.Format("/News.xaml?Link={0}", list[listBox.SelectedIndex].Link), UriKind.Relative));

    Или, если расширить область видимости не представляется возможным, список list можно получить из свойства ItemsSource ListBox'а. 
    8 января 2013 г. 7:37
  • list и так за циклами (foreach) находится.Или Вы имелли ввиду следующее?
     for (int y = 0; y < Nm.Count; y++)
                {
                    list.Add(new News
                    {
                        Title = Nm[y],
                        Text = Ts[y],
                        Image = new BitmapImage(new Uri(Is[y])),
                        Link = Ls[y]
                    });
    
                }

    Извините,я в программировании не силен,к сожалению в универе мало,чему научили.Не могли бы Вы более примитивно объяснить?
    8 января 2013 г. 11:09
  • 2xero-rock

    Я имел ввиду строчку

    List<News> list = new List<News>();

    вынести из метода, в котором два цикла foreach (поместить перед заголовком этого метода или в самом начале класса). Тем самым list станет переменной класса и будет видна в методе NewsBlog.

    Область видимости - одно из базовых понятий, так что про это написано очень много: Область видимости

    • Помечено в качестве ответа xero-rock 8 января 2013 г. 17:13
    8 января 2013 г. 12:48
  • Cпасибо.все получилось
    8 января 2013 г. 17:13
  • У меня есть на главной странице новости и я выбираю одну из них.Далее меня перебрасывает на 2-ю страницу,но когда я нажимаю на "стрелочку" меня перебрасывает на гл.страницу и эта страница секунд на 5 не риагирует на нажатия,и после  все хорошо.я начинаю листать список свой и в конце у меня он дергается.Не знаете как исправить это?
    • Изменено xero-rock 8 января 2013 г. 21:52
    8 января 2013 г. 18:42