| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > ListView, доступ к Slider определённому в |
| Автор: CasperSC 6.8.2011, 14:22 | ||||||
Всем привет. Ситуация такая: Есть UserControl в нём ListView. Я сделал DataTemplate для GridViewColumn.CellTemplate. В итоге получилось что-то вроде плейлиста, как вконтакте, то есть в каждой ListViewItem есть слайдер. Я хочу при воспроизведении трека, чтобы я мог управлять этим Slider'ом. Как к нему получить доступ? Например при событии SelectionChanged. Вообще что-то не въеду никак, как же сделать взаимодействие с Slider?
На одном форуме посоветовали глядеть как сделано в примере и сделать у себя также:
Но почему-то эта конструкция иногда возвращает null (комментарии в коде поясняют ситуацию, так что лучше их прочитать)?
Скриншот! http://radikal.ru/F/s015.radikal.ru/i330/1108/cd/d20569bc1e8f.png.html Кстати о скриншоте. В момент срабатывания точки останова sliderIndex равен 0, а как видно на скриншоте под индексом 0 есть объект. То есть мы ищем ListViewItem как я понял через объект передаваемый в параметрах, но как опять же видно на скриншоте метод вернул null. |
| Автор: Gvozdin 9.8.2011, 15:31 |
| Тут видимо играет роль виртуализация. В случае с деревом с виртуализацией правильная последовательность поиска элемента описана в MSDN http://msdn.microsoft.com/en-us/library/ff407130.aspx#Y486 Можно по аналогии перенести к вам. Не так просто в этом разобраться конечно, но уметь работать с виртаулизацией надо уметь Алгоритм собственно сводится к запросу BringIntoView и ожидания пока ItemContainerGenerator сгенерирует элемент. Хотя странно что в случае выбора элемента самим пользователем такое может происходить. ContainerFromItem возвращает null в случае клика пользователем или вы тестируете? |
| Автор: CasperSC 9.8.2011, 18:53 |
| Нет при программном выборе первого элемента например в большом списке, когда доиграл последний в списке трек, то надо переключиться на первый. Я просто отключил виртуализацию. Сейчас посмотрю ваш вариант и может применю его. |
| Автор: Gvozdin 9.8.2011, 20:10 |
| Сделали VirtualizingStackPanel.IsVirtualizing=False на ListBox? Без виртуализации заработало? |
| Автор: CasperSC 9.8.2011, 20:30 | ||
Нет, немного по другому:
|
| Автор: Gvozdin 9.8.2011, 20:51 |
| Тоже вариант %) |