![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Есть View - это окно, и соответственно ViewModel. Дальше у нас в окне расположен ListView, который биндится к данным ViewModel.
В ListView есть дататемплейт, который отрисовывает кнопку. К Кнопке привязана команда, которая находится в ViewModel. Примерно так:
Я хочу, чтобы при нажатии на кнопку сработала привязанная команда и произвела действие над объектом, который привязан к данному итему. То есть, у меня не получается передать сам объект, который привязан к данной кнопке в ViewModel, для того чтобы произвести над ним манипуляции. Можно конечно привязывать SelectedItem и получать его при клике, но не факт что клик будет на кнопке выделенного элемента... |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Все очень просто:
Но тут есть еще один момент, ваша команда раположена в самом айтеме? Потому что вы биндитесь к текущему контексту данных, которым будет являться в этом случае сам айтем, а не модель представления. Для того чтобы забиндить в данном случае команду, надо явно прописать у биндинга Source на вашу модель. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
-Mikle-, похоже вы меня не поняли... или я вас...
Она там прописано, я просто код на примере упростил, вопрос в другом. Итем биндится к коллекции данных в ViewModel. И команда тоже находится в ViewModel, и она даже выполняется. Но выполняется она не так как мне бы хотелось, просто у меня SelectedItem с ListView тоже привязан к данным у ViewModel. И при нажатии на кнопку команда обрабатывается по отношению к выделенному итему, а я хочу чтобы она отрабатывалась не по отношению к выделенному, а по отношении к тому, на которому нажата кнопка. Он не обязательно является выделенным. Добавлено через 1 минуту и 44 секунды CommandParameter="{Binding}" - это интересно, но я опять же не представляю как всё это реализовать. Есди я передам в CommandParameter текущий итем, то как я в моделе узнаю где тот итем что мне надо. Получается что будет много итемов и много кнопок... |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Это то, что вам нужно. Задав параметр таким образом, вы будете передавать в команду датаконтекст кнопки, то бишь конкретного итема, а не SelectedItem.
Попробую еще объяснить по другому. У листвью DataContext задан как ваша модель, ок. Когда листвью генерит контейнеры (фактически ListViewItem) для итемов списка в вашей модели, он ложит созданному ListViewItem.DataContext = <итем из списка>. Далее, ваша кнопка полчается находится в контексте конкретного ListViewItem, а это значит в контексте конкретного айтема в списке, а не в контексте SelectedItem. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
| Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
-Mikle-, спасибо
Всё дело в том, что я не знал как передаётся CommandParamete, я думал его тоже надо привязывать к ViewModel чтобы потом обрабатывать при вызове команды. А он оказывается передается параметром Execute. Тогда всё правильно и удобно получается. Спасибо. |
|||
|
||||
| -Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 13 Всего: 59 |
Не за что, всегда рад
-------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |