Я не запускал ваш код, но, глядя на ваш XAML, я вижу, что для вашего макета стека в вертикальной опции мы говорим, что он заканчивается
<StackLayout VerticalOptions="End" Orientation="Horizontal" >
<Label Text="Check Default:" FontSize="18" />
<CheckBox IsChecked="False" Color="#006BE6" ></CheckBox>
Однако, обратите внимание, как он переносится макет родительского стека. Поскольку у него нет запроса на высоту, он просто подчиняется тому, что ему было сказано. Родительское расположение стека - это то, где определяется представление списка. Таким образом, он загружает представление списка, а затем рендерит другой макет стека внизу (Конец), вызывая огромный разрыв так по существу:
<StackLayout VerticalOptions="End" Orientation="Horizontal" >
<Label Text="Check Default:" FontSize="18" />
<CheckBox IsChecked="False" Color="#006BE6" ></CheckBox>
</StackLayout>
</StackLayout>
Goes To:
</StackLayout>
<StackLayout VerticalOptions="End" Orientation="Horizontal" >
<Label Text="Check Default:" FontSize="18" />
<CheckBox IsChecked="False" Color="#006BE6" ></CheckBox>
</StackLayout>