Простой вопрос о привязке, невозможно привязать к команде кнопки в DataTemplate с помощью MVVM Light Toolkit

Я без особого успеха пытался привязать к кнопкам в DataTemplate. Кнопка не срабатывает. Нажатие кнопки успешно работает вне DataTemplate. Тем не менее, если я создаю Click = "button_click", кнопка щелчка запускается. Контент кнопки также отлично связывается.

Пример для иллюстрации ..

Почему не срабатывает команда? Совет, как с этим поступить? Пример представляет собой упрощенную версию моей реальной проблемы, в настоящее время я не использую Listbox. Я только воссоздал ту же проблему со списком ..


person deliberative assembly    schedule 26.05.2010    source источник
comment
Не могли бы вы вставить свой код, который вы используете и выполняете.   -  person Malcolm    schedule 26.05.2010
comment
Странно, наклеил. Приведу другой пример.   -  person deliberative assembly    schedule 26.05.2010
comment
‹ListBox ItemsSource = {Binding Cars, Mode = TwoWay}› ‹ListBox.ItemTemplate› ‹DataTemplate› ‹Button Content = {Binding Name} Command = {Binding AddButtonCommand, Mode = OneWay} /› ‹/DataTemplate› ‹/ListBox.ItemTemplate ›‹/ListBox›   -  person deliberative assembly    schedule 26.05.2010
comment
Извините за форматирование. Как ни странно, исходный пример находится в теле вопроса, когда я иду его редактировать. Просто кажется странным, что кнопка получает привязку контента, но не привязку команды. И снова я использую ту же кнопку на холсте прямо над ним. Я надеялся связать команду parm, которая включала бы какой-то объектный ключ ... но никаких кубиков даже для запуска события.   -  person deliberative assembly    schedule 26.05.2010
comment
DataContext переключается, не так ли?   -  person deliberative assembly    schedule 26.05.2010
comment
‹Button Content = {Binding Name} Command = {Binding DataContext.AddButtonCommand, Mode = OneWay, ElementName = LayoutRoot} /› конечно .. ну .. :) Это билет.   -  person deliberative assembly    schedule 26.05.2010


Ответы (1)


Один раз я задавал тот же вопрос, сам придумал ответ, см. Этот вопрос:

Как подключить кнопку в шаблон данных Silverlight ListItem в ResourceDictionary (Styles.xaml) с обработчиком?

Похоже, решение заключается в использовании здесь «вложенных» ViewModels:

Другими словами, вместо того, чтобы связывать мой ListBox напрямую с коллекцией DTO / бизнес-объектов (как я делал выше), я вместо этого создал простую ViewModel для обертывания каждого DTO и имел команду на нем, а не на оригинале, ВМ верхнего уровня.

Это похоже на sln?

person Bobby    schedule 26.05.2010
comment
Ага, это точно. На самом деле я реализовал то же самое. Настоящая проблема, с которой я столкнулся, заключалась в управлении панелью, и я хотел удалить панель с помощью кнопки на панели. На мой взгляд, использование привязок к модели родительского представления стало менее чем чистым. Требуется ключ или индекс для привязки к параметру команды, и я бы предпочел вообще не использовать параметр команды. Каждый раз, когда я думаю об этом, я сомневаюсь в своем способе атаки. Обычно, если мне это нужно, я что-то делаю не так. Спасибо за ответ. - person deliberative assembly; 27.05.2010