| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > ListView, проверить входит ли курсор мыши |
| Автор: Rohoss 17.10.2010, 17:35 | ||
Есть контрол ListView, который содержит три элемента. Примерно выглядит всё так.
Как мне, при клике правой кнопки мыши на ListView узнать, находится ли курсор на каком-то из трёх элементов ListView или в пустой области (Той области ListView, где нет элементов)? Мне кажется решение должно содержатся в самом ListView, но не нашёл |
| Автор: WolfTheGrey 17.10.2010, 21:31 |
| Пробовал ни как, Нужно обрабатывать два события: MouseLeftButtonDown="ListBox_MouseLeftButtonDown" - который обрабатывается событием MouseButtonEventArgs SelectionChanged="ListBox_SelectionChanged" а этот SelectionChangedEventArgs |
| Автор: Kaerus 18.10.2010, 18:57 |
| А зачем тебе это надо и ну что должно произойти (там событие вызваться или что). Потому как есть идеи, но надо цель уточнить. |
| Автор: Rohoss 18.10.2010, 23:37 | ||
ну я хочу вызвать контекстное меню для списка одно, а для пустой области другое |
| Автор: WolfTheGrey 19.10.2010, 01:14 | ||||
| ёпть. То что ты хочешь, сделать реально. Но пока моих знаний хватает на то, чтоб контекстменю прописывать в ручную. вот что у меня получилось:
Можно сделать и так: (прописать сонекстменю в контейнее листбокса) но в этом коде чего то не хватает, или что то не правельно.
|
| Автор: WolfTheGrey 19.10.2010, 01:30 | ||
забей на то, что выше писал, все на много проще:
|
| Автор: Rohoss 19.10.2010, 14:04 |
| WolfTheGrey, спасибо конечно, но тут дело в другом. Вызывается не контекстное меню WPF, а контекстное меню проводника. Есть класс, который принимает параметром элемент списка и точку(Point) а потом вызывает для них контекстное меню. Поэтому обрабатывать приходится клик правой кнопкой мыши… |
| Автор: WolfTheGrey 19.10.2010, 22:40 |
| Немножко кода в студию пожалуйста. от части интересует:
|
| Автор: Kaerus 21.10.2010, 00:32 | ||||
Как обычно в голову приходит использование WPF Behaviors
А вот применения в шаблоне (оптимальность решения не гарантирую, но работает)
|
| Автор: Rohoss 23.10.2010, 16:13 |
| Kaerus, я так понимаю, использовать сборку содержащую класс Behavior<T> можно, установив Expression Blend? В библиотеках .NET 3.5 его нет? |
| Автор: Kaerus 23.10.2010, 16:44 |
| Где то читал, что формально поведения не являются частью WPF, а появились в Exression Studio. Поэтому нужно будет поставить бленд и желательно 4 (если не ошибаюсь generic behaviors появились именно в 4.0 версии). P.S. A Blend надо ставить однозначно. Лично я сейчас уже не представляю как можно работать с WPF без бленда |
| Автор: DenWPF 23.10.2010, 17:38 | ||
| если я верно понял задачу, то при нажатии правой кнопки если это listitem то он выделиться, а значит у ListBox будет SelectedItem. используй это. только там вроде надо будет повесить событие и функцию
|
| Автор: Rohoss 23.10.2010, 17:48 |
| если элементы будут выделены и щёлкнуть правой кнопкой в пустую область они и останутся выделенными. |
| Автор: DenWPF 23.10.2010, 19:31 |
| может быть я уже не помню что этот код делал...аа вроде он наоборот что когда нажимаешь правой кнопкой на элементе что бы он выделлялся |