Кажется, проблема в том (хотя нельзя сказать наверняка без дополнительного XAML), что вы размещаете элементы управления, используя Margin для позиционирования элементов. Как вы только что узнали, это не лучший подход. Silverlight имеет широкий спектр контейнеров макетов, которые помогут вам расположить элементы управления без необходимости вручную размещать каждый элемент.
В этом случае может показаться, что вы располагаете элементы управления вертикально расположенными друг над другом, для чего вы можете использовать контейнер StackPanel
. Вы просто добавляете каждый дочерний элемент в StackPanel
, и он обрабатывает их расположение друг над другом. Как только вы это сделаете, потому что следующий элемент всегда находится ниже ListPicker
, когда ListPicker
расширяется, элементы под ним опускаются вниз.
Для более сложных макетов вы можете использовать контейнер Grid
(который почти наверняка является текущим родительским контейнером ваших элементов управления), но вы должны использовать строки и столбцы, чтобы гарантировать, что элементы не «перетекут» друг в друга. Примечание. Гибкость элемента Grid
имеет свою цену, и вы должны тщательно продумать, нужно ли вам его использовать или можно использовать более простой контейнер, особенно для повторяющихся контейнеров, например, в списках.
Если вы новичок в системе макетов в Silverlight, этот ресурс может оказаться особенно полезным: http://msdn.microsoft.com/en-us/library/cc645025(VS.95).aspx