StackLayout с использованием BindableLayout внутри ScrollView может использоваться для ваших требований.
XAML-код:
<ScrollView
x:Name="calender"
Orientation="Horizontal">
<StackLayout
BackgroundColor="Blue"
BindableLayout.ItemsSource="{Binding Dates}"
Orientation="Horizontal">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Button
TextColor="White"
BackgroundColor="Blue"
Text="{Binding}"/>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
</ScrollView>
Нажатие кнопок:
private void LeftButton_Clicked(object sender, EventArgs e)
{
if (calender.ScrollX > 200)
calender.ScrollToAsync(calender.ScrollX - 200, 0, true);
else
calender.ScrollToAsync(0, 0, true);
}
private void RightButton_Clicked(object sender, EventArgs e)
{
if (calender.ScrollX < calender.ContentSize.Width - calender.Width - 200)
calender.ScrollToAsync(calender.ScrollX + 200, 0, true);
else
calender.ScrollToAsync(calender.ContentSize.Width - calender.Width, 0, true);
}
Результат пользовательского интерфейса:
![enter image description here](https://i.stack.imgur.com/NePYo.gif)