Как добавить столбец «выбрать» в сетку данных Silverlight с MVVM - PullRequest
0 голосов
/ 26 июля 2011

Мне нужно иметь столбец с флажками в моей DataGrid, чтобы пользователь мог выбирать различные строки (чтобы операция была выполнена позже).Сетка ItemsSource привязана к ObservableCollection.Мое самое быстрое решение (не самое лучшее, но только для того, чтобы оно работало), я подумал, будет наследовать от класса в коллекции, добавить свойство IsSelected, к которому я мог бы привязаться, и просто работать оттуда.Тем не менее, коллекция, с которой я начинаю, уже создана, и унизительная / контравариантность не работает для меня.И было бы невозможно воссоздать коллекцию производного класса.

Итак, я сейчас ищу простое решение, возможно, с прикрепленным поведением в столбце флажка.Я стараюсь не тратить на это слишком много времени, поэтому мне нужны идеи.

Ответы [ 2 ]

0 голосов
/ 27 июля 2011

Мне в конечном итоге пришлось сделать это так:

1) Используйте CheckBox внутри TemplateColumn вместо DataGridCheckBoxColumn, потому что DataGridCheckBoxColumn не имеет событий Checked & Unchechecked для подключения.

2) Создать класс поведения для событий Checked и Unchecked на флажке с отдельными командами для каждого; Мне пришлось создать класс поведения, потому что, хотя CheckBox уже имеет свойство Command, похоже, не было никакого способа определения состояния элемента управления, отмеченного или не отмеченного, если только он не используется в качестве CommandParameter, который мне нужен для передачи информации для связанный с DataGrid элемент в.

3) Передать ссылку на виртуальную машину из представления и объявить виртуальную машину статическим ресурсом в коде; Я должен был сделать это таким образом, чтобы привязать команды в моей виртуальной машине с флажком, имея при этом доступ к тому же Observab

0 голосов
/ 26 июля 2011

Я думаю, что вы делаете это хороший способ сделать это. Подкласс, который вы используете, является своего рода «ViewModel» для исходного класса.

Однако есть еще один способ, который я нашел в этой публикации Лорана Буньона , который использует коллекцию SelectedItems элемента управления DataGrid, к которой вы, к сожалению, не можете привязаться напрямую, поскольку это не DependencyProperty, но он использует поведение EventToCommand из своего MVVMLight Toolkit и передает коллекцию SelectedItems как CommandParameter.

Надеюсь, это поможет;)

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