Лично я считаю, что выполнение такого рода задач в коде - это правильный путь. Если вы хотите сделать его более пригодным для повторного использования, создайте вложенное свойство, которое содержит эту функциональность.
Прикрепленное свойство - это то, что я делал ранее. У меня нет доступа к коду прямо сейчас, но я могу редактировать позже, если вам это нужно.
Прокрутка в сетке данных - это то, что IMHO - вещь, специфичная для GUI, и, следовательно, хорошо относится к коду.