SilverLight 4 DataGrid и MVVM: использование триггера SelectionChanged для проверки флажка, но NotifyPropertyChanged вызывает сбой - PullRequest
0 голосов
/ 04 марта 2011

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

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

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

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 марта 2011

Я нашел очень простое решение, которое не включает триггеры или код позади.См .: Флажок Silverlight с одним щелчком мыши. Столбцы DataGrid

Кажется, что он работает с использованием шаблона столбца, но предоставляет только CellEditingTemplate и не CellTemplate.

0 голосов
/ 06 марта 2011

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

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

или установите флаг isloading в вашей модели представления и не вызывайте inotify, если isloading имеет значение true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...