|
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
|
|||
---|---|---|---|
#18+
Всем привет. Ниже приведен код метода. Выделенная часть в нем не работает - всегда возвращает 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; } } } ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 16:44 |
|
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
|
|||
---|---|---|---|
#18+
Абросов Юрий, нужно знать, что в item приходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 18:18 |
|
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
|
|||
---|---|---|---|
#18+
Абросов Юрий, Хм. Я так понял ты таким способом заполняешь свой листбокс. Мне кажется для ВПФ извращение какое-то ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 19:15 |
|
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
|
|||
---|---|---|---|
#18+
AlexeiK, В item приходит значение типа KeyValuePair<int, string> - правильное значение. А в XAML-е в свойстве ListBox Display...Path задано значение "Value". Пробовал я получать контейнеры item-мов в обработчике события "Loaded" листбокса - получилось. А вот в приведенном выше методе - нет. Похоже, ListItems формируются только при загрузке листбокса. Вот если бы можно было из этого метода перегрузить листбокс - было бы здорово! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 20:09 |
|
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
|
|||
---|---|---|---|
#18+
Абросов Юрий, Мне тоже интересно, зачем такой извращенный способ заполнения... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 20:52 |
|
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
|
|||
---|---|---|---|
#18+
unknownfromrus, Почему извращенный? А если мне нужно отследить выбранный item, когда он изменяет свое местоположение в списке - скажем при ручной сортировке? А какой другой есть способ динамического заполнения листбокса и динамического же изменения свойств его item-мов? Подскажите - я новичок в WPF ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 00:17 |
|
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
|
|||
---|---|---|---|
#18+
Абросов Юрий, Начнем с того, что гонять как параметр Листбокс, дататемплейтселектор и т.п. - это можно если полностью не пользоваться тем, что предлагает ВПФ (это если только ненавидеть биндинг так поступать можно). Это скорее из Винформс - хотя тут утверждать не стану, так как практически с ним не сталкивался. А то что ты просишь - положение в коллекции и т.п. - ну кто тебе мешает создать "умную коллекцию" и цеплять ее к листбоксу? Для этого тебе достаточно основных знаний биндинга коллекции в листбоксу, а в шарпе ты я так понял разбираешься (раз пеняешь только на впф). Ты хотя бы ради интереса подцепи ObserveableCollection к листбоксу и изменяй руками положение элементов в листбоксе и потом заправшивай их индекс из коллекции. На мой взгляд подобные задачи в ВПФ очень простые и справляться с ними должны новички ВПФ-а без особых усилий ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 00:26 |
|
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
|
|||
---|---|---|---|
#18+
Абросов Юрий, Тут может кто-то со мной не согласится. Но я считаю, что лучше, когда бизнес логика ничего не знает о контролах из вьюх - см. в сторону MVVM. Отступать придется лишь в случаях - когда есть ограничения в самих элементах - в этом случае можно бороться разными способами. Но таскать сами контролы в бизнес логику - это как крайний случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 00:34 |
|
Как получить контейнер ListBoxItem для каждого item ListBox контроллера
|
|||
---|---|---|---|
#18+
unknownfromrus, Спасибо за наводку (ObserveableCollection) - теперь хоть знаю, где копать. А то весь биндинг в WPF для меня сплошная целина. Я работал в основном с ASP.NET WEB- и Windows формами - а там биндинг не играет такой определяющей роли как в WPF и MVC. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 01:19 |
|
|
start [/forum/topic.php?fid=21&msg=38310103&tid=1441356]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
180ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 294ms |
0 / 0 |