![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Есть ListBox, состоящий из ссылок (HyperLink). При щелчке по ссылке выделения строки ListBox'а не происходит (ListBox.SelectedItem равен null). Если же щелкнуть правее ссылки, то элемент ListBox'а выделяется. Как сделать так, чтобы выделение происходило и при щелчке по HyperLink?
|
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
Есть предположение, что такая ситуация происходит из-за того, что твой HyperLink обрабатывает клики, а значит, дальше вент не идёт, соответственно, выделения не происходит. Просто чтобы проверить - поставь IsHitTestVisible = false у ссылок и посмотри что будет В)
|
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Kefir, действительно обрабатывает. Но ведь Click - bubble routed event, и т. к. e.Handed в True я не выставляю, то это не должно влиять. Проверил: убрал обработчик - ничего не изменилось.
Поставил. Теперь все нормально выделяется при щелчке по ссылке... правда ссылка теперь вовсе и не ссылка: при наведении на нее курсор не меняется; т. е. фактически это не ссылка, а лейбл с синим текстом. Так что вопрос в силе: как сделать так, чтобы при щелчке на ссылке в SelectedItem присваивалось соответствующее значение. |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Это очень важный для меня момент. Был бы очень благодарен за помощь
|
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
что-то у меня плохо под вечер голова варит. возможно в обработчике клика в ссылке ты бы мог просто ставить listBox.SelectedItem = this;? А то, что ты не ставишь флажок - это не значит, что его не ставит фреймворк (можешь .НЕТ код поглядеть, думаю, что там такая строка найдётся)
просто видишь, очевидно, что после обработки эвента твоей ссылкой он больше никуда не идёт (о чём нам поведал эксперимент с IsHitTestVisible). |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Нашел workaround: http://forums.msdn.microsoft.com/en-US/wpf...4-2556c740bc0e/
Нужно обработать событие GotKeyboardFocus для ListBoxItem и установить sender.IsSelected в true. |
|||
|
||||
| Kefir |
|
|||
|
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
да, можно и так делать.
|
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Кстати, Kefir, я не понял, что ты имел в виду вот здесь:
Под this подразумевался активный Item ListBox'а? Так вся сложность и была в его получении. В вышеописанном workaround'е текущий Item передается в sender, чему я безгранично рад |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 2 Всего: 62 |
Вот еще одно решение: http://forums.msdn.microsoft.com/en-US/wpf...34-8c11ee11e15c
Видимо, нечто подобное Kefir и имел в виду. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |