WPF MVVM - Привязка команды в ItemsControl

function get_random_color() {
    return "#" + (Math.round(Math.random() * 0XFFFFFF)).toString(16);
}

http://jsfiddle.net/XmqDz/1/

9
задан Rich 26 June 2009 в 21:39
поделиться

2 ответа

Могу ли я привязать ItemsControl.ItemsSource к коллекции нового класса ViewModel, представляющего каждый элемент?

Создаете ли вы CustomObjectViewModel для размещения команды или помещаете команду в ту же ViewModel список действительно зависит от функции происходящего действия. Это что-то, что принадлежит CustomObject, или это что-то, что принадлежит вашей текущей ViewModel?

Или есть какое-то выражение привязки, которое я могу использовать для возврата к DataContext окна, чтобы иметь доступ для привязки к ViewModel (когда я набираю это, это звучит плохо, поэтому я принимаю большое «НЕТ» этой идее)?

Это не так плохо, как кажется. На самом деле вам не нужен DataContext окна, только DataContext до того, как он переключился на отдельные элементы. to - событие LeftMouseButtonUp для Сетка управления. Нет "команды" для сетка, поэтому я пытался использовать InputBindings.

Для этого я бы использовал что-то вроде Attached Command Behaviors , которое позволит вам прикрепить ICommand к любому событию.

19
ответ дан 4 December 2019 в 08:52
поделиться

Джош Смит написал отличную статью в MSDN здесь , где он говорит о связывании команд.

В вашем случае это сводится к следующему:

  • Вы выиграли » • исключить ВСЕ ваш код программной части, но он, вероятно, будет выглядеть по-другому
  • Ваши CustomObjects, вероятно, должны будут иметь классы совместимости VM или сами виртуальные машины, чтобы воспользоваться преимуществами архитектуры RelayCommand, которую он описывает.

HTH.

4
ответ дан 4 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: