Хорошо, вот что я сделал, чтобы решить мою проблему, однако это повлечет за собой некоторые переделки с моей стороны. Я заменил свой просмотр списка на элементы управления. Поэтому я больше не использую GridView представления списка. Вместо этого я определил GridViewColumnCollection с моими столбцами, настроенными так, как я хотел.
Для моего заголовка я использовал GridViewHeaderRowPresenter со свойством столбцов, привязанным к GridViewColumnCollection. Это заботится о заголовках столбцов.
Под моим заголовком я вставляю ItemsControl, который связан с моим списком товаров. Однако теперь я использую DataTemplateSelector, который будет заменять шаблон в зависимости от элемента и его свойств. Если вы не знакомы с селектором шаблонов данных, перейдите сюда: селектор шаблонов данных
По сути, мой шаблон по умолчанию для элементов в списке - это GridViewRowPresenter, свойство столбца которого связано с GridViewColumnCollection. Это держит его в соответствии с заголовками. Тем не менее, я все еще могу поменять шаблон для строки, чтобы быть чем-то еще с помощью средства выбора шаблонов данных. И это решает мою проблему.
Однако теперь мне нужно переделать представление списка с помощью сетки, которую я создал, и использовать этот метод. Так что это не обходится без некоторых затрат.