Как добавить дополнительные данные в DataGridRowGroupHeader? - PullRequest
2 голосов
/ 22 марта 2010

У меня есть DataGrid, который показывает некоторые данные через PagedCollectionView с одним определением группы. Я создал Style для соответствующего DataGridRowGroupHeader, под которым я добавил ControlTemplate, содержащий дополнительные TextBlock и интервал Rectangle. Я хотел бы привязать ширину этих элементов управления к ширине отдельных столбцов, но я изо всех сил пытаюсь заставить это работать. Я также хотел бы связать свойство Text TextBlock со значением.

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

Однако я считаю, что оба набора привязок могут быть выполнены с использованием одной или нескольких реализаций ValueConverter, но мне было интересно, есть ли лучший способ. Может ли что-либо из этого быть достигнуто с помощью определения ControlTemplate?

1 Ответ

2 голосов
/ 29 марта 2010

После некоторых проб и ошибок я смог настроить заголовки группы строк. Ключ к разблокировке решения включал в себя как свойство RowGroupHeaderStyles, так и событие LoadingRowGroup в DataGrid.

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

Обновление
JDM спросил, как заставить элементы управления выполнять привязку и т. Д. В обработчике LoadingRowGroup. Вы можете получить заголовок строки из свойства DataGridRowGroupHeaderEventArgs.RowGroupHeader аргументов события, а затем использовать VisualTreeHelper, чтобы получить дочерние элементы управления заголовка. Если у вас есть элементы управления, вы можете связать их в коде, как и любой другой элемент управления.

...