SilverLight 4 DataGrid и MVVM: использование триггера SelectionChanged для установки флажка, но NotifyPropertyChanged вызывает сбой

У меня есть DataGridCheckBoxColumn в моем DataGrid, который должен указывать строки, выбранные пользователем. Я хочу, чтобы флажки устанавливались/снимались одним щелчком мыши. Создание редактируемого столбца (т.е. IsReadOnly="False") означает, что пользователь должен щелкнуть дважды (первый щелчок просто выбирает строку, 2-й щелчок меняет флажок), поэтому я решил установить/очистить свойство, к которому привязан столбец в просмотреть код модели в ответ на срабатывание триггера SelectionChanged.

Установка/очистка свойства работает нормально, однако, как только я вызываю NotifyPropertyChanged("имя коллекции, к которой привязана сетка"), чтобы представление отображало изменение, это приводит к повторному срабатыванию триггера SelectionChanged. Это повторяется около 10 раз, пока не будет выбрано исключение.

Если я удаляю вызов NotifyPropertyChanged, триггер SelectionChanged срабатывает один раз, но, конечно, я не вижу никаких изменений в пользовательском интерфейсе. Коллекция представляет собой PagedCollectionView, если это имеет значение.

Как я могу заставить это работать? Примечание. Я использую шаблон MVVM, поэтому все делается с привязками к модели представления (без кода).

Спасибо


person Laurence    schedule 04.03.2011    source источник


Ответы (2)


Похоже, у вас есть бесконечный цикл по дизайну.

но попробуйте использовать selectionchanged вместо selectionchanged,

или поместите флаг isloading в свою модель просмотра и не вызывайте inotify, если isloading истинен

person Cowboy    schedule 06.03.2011
comment
К сожалению, нет триггера selectionchanged. - person Laurence; 09.03.2011