Задать вопрос
hummingbird
@hummingbird

Как идентифицировать ListBoxItem (WPF)?

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

На каждый элемент ListBox вешаю контекстное меню, в котором есть те или иные опции. Я без труда могу получить SelectedIndex каждого элемента при выборе опции из контекстного меню, но этого недостаточно для идентификации. Вернее, это идентифицирует элемент относительно данного списка.

Но у меня список формируется из новостей, которые лежат в БД, которые имеют свой уникальный ID. Мне вот как раз по нему и нужно идентифицировать все записи.

Отсюда у меня два вопроса, каждый из которых идет по своему пути.

1. Возможно ли как-то при формировании списка задать индекс вручную?
2. Если первый вариант невозможен, то возможно ли вынуть в обработчике события (клика по элементу из контекстного меню) то или иное значение, которое добавлялось в список при его формировании?

Заполняю список следующим образом:
var lines = new List<NewsList>();

while (reader.Read())
{
    DateTime dateAdd = reader.GetDateTime(3);

    lines.Add(new NewsList() { ID = reader.GetInt32(0), Title = reader.GetString(1), Text = reader.GetString(2), DateAdd = dateAdd.ToString("d MMM yyyy, HH:mm") });
}

myListBox.DataContext = lines;


Сам NewsList выглядит так:
public class NewsList
{
    public Int32 ID { get; set; }
    public String Title { get; set; }
    public String Text { get; set; }
    public String DateAdd { get; set; }
}
  • Вопрос задан
  • 282 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
hummingbird
@hummingbird Автор вопроса
В общем, сам решил проблему.

В ListBox добавляем SelectedValuePath="ID", где ID - то, что необходимо в дальнейшем получать в обработчике.

Далее, чтобы принять ID, в обработчике прописываем:
int newsID = (int)myListBox.SelectedValue;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@MonkAlex
C#, SQL, Delphi, C++ etc
По второму вопросу - конечно можно. Если у вас биндится сущность "новость" на элемент листбокса, то она же и доступа по клику по ПКМ на ней. Если же вы создаете какую то отдельную текстовку для листбокса - то она всяко доступна, но если сами ссылку на новость в неё не записали, то придётся заморочиться.

Вообще, без кода сложно понять, в чем у вас проблема и в чем вопрос.
Ответ написан
Тоже ничего не понятно.
Вам Id нужен уникальный для вашего списка, или именно тот который у новости в БД?
Или вы хотите что бы список выводился по порядку как в базе, сортируясь по полю Id? List.Sort
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы