Если бы мне пришлось это реализовать, я не думаю, что попытался бы сделать это на панели. Я думаю, что вам понадобится коллекция элементов, шаблон заголовка, шаблон подкачки и шаблон элемента. Вы можете получить высоту шаблона, используя что-то вроде этого:
Size maxSize = new Size(0, 30);
UIElement templateRoot = template.LoadContent() as UIElement;
templateRoot.Measure(maxSize);
Size size = templateRoot.DesiredSize;
Для того, чтобы это работало, вам нужно указать высоту, указанную в шаблоне. Я думаю, что вы заботитесь только о высоте, поэтому я оставил ширину 0.
Как только вы получите шаблон высот, вам, вероятно, придется настроить какую-то карту, которая отслеживает, какие объекты на какой странице. Это нужно будет воссоздавать каждый раз при изменении размера или источника элементов.
После этого вам просто нужно добавить элементы в качестве дочерних элементов панели, содержащейся в элементе управления, в зависимости от того, на какой странице вы находитесь.
Вот как бы я попытался это сделать .. если это вообще имеет смысл :)