Datagrid Стиль выбора нескольких строк - PullRequest
0 голосов
/ 15 марта 2012

У меня есть эта задача, где сетка данных позволяет выбрать несколько строк.Когда выбран один ряд, его стиль должен отображать границу 1px вокруг этого ряда.Теперь, когда выбрано несколько рядов, он должен показывать синюю рамку в 13:00 вокруг всех рядов в виде одного блока.Таким образом, это как коробка вокруг всех выбранных строк.Не у каждой строки есть своя граница.Как я могу стилизовать это?

1 Ответ

1 голос
/ 12 ноября 2012

Я делал нечто подобное раньше.Вы можете использовать DataGrid.ItemContainerStyle для этой цели.Вы можете стилизовать свойство ControlTemplate для DataGridRow (который является типом контейнера элемента), изучить этот блог о том, как это сделать .В шаблоне вы должны включить новую границу.

Свойство IsSelected объекта DataGridRow должно быть привязано к некоторому свойству модели (данным строки), которое может уведомлять модель представления или любую другую службу, которую вы используете для сбора выбранных строк.Граница, включенная в ControlTemplate, должна связывать его StrokeThickness с той же моделью представления или службой.Затем вы можете использовать конвертер для этой привязки, который использует модель представления или службу, чтобы выяснить, какая сторона границы должна быть толстой для этой конкретной строки.

Эта задача не простая, но возможная.Вы можете столкнуться с некоторыми архитектурными проблемами.Я бы использовал MVVM, DI и другие шаблоны, чтобы избежать хаоса.

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

...