Има няколко начина да постигнете това, което се опитвате да направите тук. Ако производителността не е проблем, тогава бих игнорирал виртуализацията и бих опитал DockPanel
Недостатъкът тук е, че ще трябва да добавяте елементите в ред, вместо да ги добавяте по ред.
Друга възможност е да използвате два панела за стек (по един във всяка посока). Това решава проблема с добавянето, но изисква използването на повече панели.
И двете предходни две опции ще изискват индивидуалните елементи да имат зададена височина/широчина.
Последната опция (в зависимост от това колко голяма е мрежата ви) би била да използвате мрежа с редове и колони с фиксиран размер с елементи, които обхващат редове (използвайки rowspan свойство). Недостатъкът на този метод е, че не знам за добър начин за създаване на този контрол в xaml за неопределен брой редове/колони, така че ще трябва да го създадете в код, за да получите необходимия брой редове/колони.
Ако имате проблеми с производителността, можете да опитате да използвате VirtualizingStackPanel. Ако това все още не отговаря на вашите изисквания за производителност, тогава ще трябва да подкласирате VirtualizingPanel
и го пригодете да отговаря на вашите специфични нужди.
Вижте тук за повече информация относно производителността на панела.
Предлагам първо да опитате двата метода StackPanel
, след това метода VirtualizingStackPanel
и накрая, ако това не работи, опитайте VirtualizingPanel
Подпълването се постига лесно чрез задаване на свойството Margin
на всяка подконтрола.
За превъртане използвайте ScrollViewer
person
N_A
schedule
14.08.2012