Отвечено Id текущего элемента Листбокса

  • 22 апреля 2012 г. 6:03
     
      С кодом

    Всем привет!

    У меня есть Listbox и я заношу в него записи из базы данных. По одной записи в каждый эксземпляр листбокса.

    Вообще, класс записи содержит много элементов, но я сейчас буду говорить только о двух из них - о (String Text и Int id)

    Кстати, класс называется Task и вот так я заношу элемент Text в Листбокс:

    Task tasks = new Task();
                 for (int i = 0; i < tasks.Count(); i++)
                 {
                     string Text = tasks[i].Text;
                     dataSource.Add(new Taskonlistbox() { Text = Text});
                 }

    Заносится и отображается всё нормально. Как видите, ID я не передаю, только Text.

    Я хочу передать Id в другую форму примерно вот так:

            private void TextBlock_DoubleTap(object sender, System.Windows.Input.GestureEventArgs e)
            {
                int id = (listBox1.SelectedItem as Taskonlistbox).Id; 
                NavigationService.Navigate(new Uri("/EditTask.xaml?currentID=" + id, UriKind.Relative));
    
            }

    Но, естественно, это не работает, потому что Id в экземпляр листбокса я не передаю, и не знаю как это сделать и куда его засунуть.

    Происходит переход в другую форму, и выскакивает ошибка на том месте, где программа по этому самому непереданному Id пытается вытянуть запись из БД.

    Пробовал биндить Id на имя экземпляра листокса: Name = "{Binding Id}", но, опять же, ничего не получалось.

    Не подскажете что делать? Заранее спасибо.

Все ответы

  • 23 апреля 2012 г. 12:54
     
     Отвечено

    Здравствуйте.

    Если вы нашли решение своей проблемы - то лучше будет не удалять топик, а выложить решение. Так вы поможете тем людям, кто может столкнуться с подобной проблемой и будет искать решение. Это полезней и лучше, чем удалять топик, если вам не составит труда рассказать решение.

    Спасибо.


    Для связи [mail]

  • 24 апреля 2012 г. 4:43
     
     Предложенный ответ С кодом

    А зачем все усложнять?

    //Инициализирую новый экземпляр листбокса, для примера
    
    ListBox lbTasks = new ListBox();
    
    Task tasks = new Tasks();
    
    //Задаю источник элементов для листбокса
    
    lbTasks.ItemSource = tasks;

    Далее создать шаблон представления элементов списка (ItemTemplate), в котором указать как необходимо отображать данные.

    Теперь код

        private void TextBlock_DoubleTap(object sender, System.Windows.Input.GestureEventArgs e)
            {
                int id = (listBox1.SelectedItem as Taskonlistbox).Id; 
                NavigationService.Navigate(new Uri("/EditTask.xaml?currentID=" + id, UriKind.Relative));
    
            }

    будет работать.

    • Предложено в качестве ответа Viktor Borisov 24 апреля 2012 г. 4:44
    •