powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как получить контейнер ListBoxItem для каждого item ListBox контроллера
9 сообщений из 9, страница 1 из 1
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
    #38309891
Всем привет. Ниже приведен код метода. Выделенная часть в нем не работает - всегда возвращает null. Почему, что здесь не так?

private void SetObjects(IList<KeyValuePair<int, string>> itemList, ListBox control, string map)
{
var selectedItems = new List<KeyValuePair<int, string>>();
foreach (KeyValuePair<int, string> item in control.SelectedItems)
{
if (!selectedItems.Contains(item))
selectedItems.Add(item);
}
control.Items.Clear();
foreach (var item in itemList)
{
if (!string.IsNullOrEmpty(map))
{
if (item.Value.ToUpper().Contains(map.ToUpper()))
control.Items.Add(item);
}
else
control.Items.Add(item);

//Select item if it was selected before!
if (selectedItems.Contains(item))
{
ListBoxItem listItem = (ListBoxItem)control.ItemContainerGenerator.ContainerFromItem(item);
if (listItem != null)
listItem.IsSelected = true;
}
}
}
...
Рейтинг: 0 / 0
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
    #38310103
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абросов Юрий,

нужно знать, что в item приходит.
...
Рейтинг: 0 / 0
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
    #38310198
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абросов Юрий,

Хм. Я так понял ты таким способом заполняешь свой листбокс. Мне кажется для ВПФ извращение какое-то
...
Рейтинг: 0 / 0
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
    #38310252
AlexeiK,

В item приходит значение типа KeyValuePair<int, string> - правильное значение. А в XAML-е в свойстве ListBox Display...Path задано значение "Value".

Пробовал я получать контейнеры item-мов в обработчике события "Loaded" листбокса - получилось. А вот в приведенном выше методе - нет. Похоже, ListItems формируются только при загрузке листбокса.
Вот если бы можно было из этого метода перегрузить листбокс - было бы здорово!
...
Рейтинг: 0 / 0
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
    #38310283
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абросов Юрий,

Мне тоже интересно, зачем такой извращенный способ заполнения...
...
Рейтинг: 0 / 0
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
    #38310474
unknownfromrus,

Почему извращенный?

А если мне нужно отследить выбранный item, когда он изменяет свое местоположение в списке - скажем при ручной сортировке?

А какой другой есть способ динамического заполнения листбокса и динамического же изменения свойств его item-мов?

Подскажите - я новичок в WPF ;)
...
Рейтинг: 0 / 0
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
    #38310479
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абросов Юрий,

Начнем с того, что гонять как параметр Листбокс, дататемплейтселектор и т.п. - это можно если полностью не пользоваться тем, что предлагает ВПФ (это если только ненавидеть биндинг так поступать можно). Это скорее из Винформс - хотя тут утверждать не стану, так как практически с ним не сталкивался.

А то что ты просишь - положение в коллекции и т.п. - ну кто тебе мешает создать "умную коллекцию" и цеплять ее к листбоксу? Для этого тебе достаточно основных знаний биндинга коллекции в листбоксу, а в шарпе ты я так понял разбираешься (раз пеняешь только на впф).

Ты хотя бы ради интереса подцепи ObserveableCollection к листбоксу и изменяй руками положение элементов в листбоксе и потом заправшивай их индекс из коллекции. На мой взгляд подобные задачи в ВПФ очень простые и справляться с ними должны новички ВПФ-а без особых усилий
...
Рейтинг: 0 / 0
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
    #38310483
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абросов Юрий,

Тут может кто-то со мной не согласится. Но я считаю, что лучше, когда бизнес логика ничего не знает о контролах из вьюх - см. в сторону MVVM. Отступать придется лишь в случаях - когда есть ограничения в самих элементах - в этом случае можно бороться разными способами. Но таскать сами контролы в бизнес логику - это как крайний случай.
...
Рейтинг: 0 / 0
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
    #38310495
unknownfromrus,

Спасибо за наводку (ObserveableCollection) - теперь хоть знаю, где копать. А то весь биндинг в WPF для меня сплошная целина.
Я работал в основном с ASP.NET WEB- и Windows формами - а там биндинг не играет такой определяющей роли как в WPF и MVC.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как получить контейнер ListBoxItem для каждого item ListBox контроллера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]