Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение элемента ListBox 
:(
    Опции темы
Idsa
Дата 22.8.2008, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Есть ListBox, состоящий из ссылок (HyperLink). При щелчке по ссылке выделения строки ListBox'а не происходит (ListBox.SelectedItem равен null). Если же щелкнуть правее ссылки, то элемент ListBox'а выделяется. Как сделать так, чтобы выделение происходило и при щелчке по HyperLink?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Kefir
Дата 22.8.2008, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



Есть предположение, что такая ситуация происходит из-за того, что твой HyperLink обрабатывает клики, а значит, дальше вент не идёт, соответственно, выделения не происходит. Просто чтобы проверить - поставь IsHitTestVisible = false у ссылок и посмотри что будет В)
PM MAIL WWW Skype   Вверх
Idsa
Дата 22.8.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Kefir, действительно обрабатывает. Но ведь Click - bubble routed event, и т. к. e.Handed в True я не выставляю, то это не должно влиять. Проверил: убрал обработчик - ничего не изменилось.

Цитата(Kefir @  22.8.2008,  13:54 Найти цитируемый пост)
Просто чтобы проверить - поставь IsHitTestVisible = false у ссылок и посмотри что будет

Поставил. Теперь все нормально выделяется при щелчке по ссылке... правда ссылка теперь вовсе и не ссылка: при наведении на нее курсор не меняется; т. е. фактически это не ссылка, а лейбл с синим текстом.

Так что вопрос в силе: как сделать так, чтобы при щелчке на ссылке в SelectedItem присваивалось соответствующее значение.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Idsa
Дата 23.8.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Это очень важный для меня момент. Был бы очень благодарен за помощь smile


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Kefir
Дата 24.8.2008, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



что-то у меня плохо под вечер голова варит. возможно в обработчике клика в ссылке ты бы мог просто ставить listBox.SelectedItem = this;? А то, что ты не ставишь флажок - это не значит, что его не ставит фреймворк (можешь .НЕТ код поглядеть, думаю, что там такая строка найдётся)  smile

просто видишь, очевидно, что после обработки эвента твоей ссылкой он больше никуда не идёт (о чём нам поведал эксперимент с IsHitTestVisible).
PM MAIL WWW Skype   Вверх
Idsa
Дата 26.8.2008, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Нашел workaround: http://forums.msdn.microsoft.com/en-US/wpf...4-2556c740bc0e/
Нужно обработать событие GotKeyboardFocus для ListBoxItem и установить sender.IsSelected в true.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Kefir
Дата 26.8.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



да, можно и так делать.
PM MAIL WWW Skype   Вверх
Idsa
Дата 26.8.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Кстати, Kefir, я не понял, что ты имел в виду вот здесь:

Цитата(Kefir @  25.8.2008,  03:29 Найти цитируемый пост)
возможно в обработчике клика в ссылке ты бы мог просто ставить listBox.SelectedItem = this;

Под this подразумевался активный Item ListBox'а? Так вся сложность и была в его получении. В вышеописанном workaround'е текущий Item передается в sender, чему я безгранично рад smile


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Idsa
Дата 29.8.2008, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Вот еще одно решение: http://forums.msdn.microsoft.com/en-US/wpf...34-8c11ee11e15c
Видимо, нечто подобное Kefir и имел в виду.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.