Цель: у меня есть 10 изображений, 4 из которых особенные. Я хочу, чтобы 4 специальных изображения соответствовали всему экрану. Я думаю, что на самом деле сделал это, но он не учитывает вкладки в нижней части приложения из AppShell.xaml. Таким образом, кажется, что оно подходит правильно, но четвертое изображение частично находится за вкладками и заставляет пользователя прокручивать.
У меня было два представления коллекции на странице, и это заставляло второе прокручиваться внутри собственного фрейма, что было странно. Поэтому, чтобы решить эту проблему, я поместил 4 специальных изображения в шаблон заголовка представления коллекции.
Вот что у меня есть, а затем то, что я хочу:
<RefreshView x:DataType="local:SpotlightViewModel" Command="{Binding LoadItemsCommand}" IsRefreshing="{Binding IsBusy, Mode=TwoWay}" Margin="0, 0, 0, 0">
<ScrollView InputTransparent="True" >
<Grid >
<CollectionView x:Name="SpotletsListView"
ItemsSource="{Binding Spotlets}"
EmptyView=""
SelectionMode="None">
<CollectionView.ItemsLayout>
<LinearItemsLayout SnapPointsAlignment="Start" SnapPointsType="Mandatory" Orientation="Vertical"></LinearItemsLayout>
</CollectionView.ItemsLayout>
<CollectionView.Header>
<CollectionView ItemsSource="{Binding SpotlightSpotlets}">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Padding="0, .1" x:DataType="model:Spotlet" HorizontalOptions="Center" VerticalOptions="FillAndExpand">
<Image Aspect="AspectFit" HorizontalOptions="Center" Source="{Binding Url, Converter={StaticResource ImageSourceConverter}}" ></Image>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</CollectionView.Header>
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Padding="0, .1" x:DataType="model:Spotlet" HorizontalOptions="Center">
<Image Aspect="AspectFit" HorizontalOptions="Center" Source="{Binding Url, Converter={StaticResource ImageSourceConverter}}" ></Image>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Grid>
</ScrollView>
</RefreshView>
То, что я хочу, просто. Сделать это для новичка в Xamarin, такого как я, не так просто.
- Первые четыре изображения для заполнения экрана, но с учетом вкладок внизу
- Все последующие изображения для заполнения экрана
- При прокрутке зафиксируйте изображение на месте, чтобы два изображения не отображались одновременно
- Когда я дойду до конца, разрешите продолжение прокрутки, чтобы вернуться наверх
Возможно, мне нужно использовать карусель для части этого, что я пробовал, но также столкнулся с каким-то странным поведением. Может ли кто-нибудь дать мне шаблон, который может помочь?
Страница 1:
[ -- this is an image -- ]
[ -- this is an image -- ]
[ -- this is an image -- ]
[ -- this is an image -- ]
Страница 2:
[ -- one image, fills -- ]
Страница 3:
[ -- one image, fills --]
Когда я достигну дна, я хочу, чтобы он снова бесконечно прокручивал одни и те же элементы. У меня есть две отдельные коллекции в коде. Один содержит 4, другой — остальные.
во-первых, будет полезно изображение, иллюстрирующее конечную цель и текущую проблему. Во-вторых, CV - это прокручиваемые контейнеры, "прокрутка в своем собственном фрейме" - это нормальное поведение. Вы не должны вкладывать их в другой вид прокрутки. В-третьих, требования, которые у вас есть, лучше подходят для карусели.
Карусель можно сделать. Сделайте свои первые четыре изображения другим шаблоном, который может лучше соответствовать списку. И если вы рассмотрели горизонтальную ориентацию, может быть легко поместиться на экране.
@ Шоу, я не совсем уверен, что понимаю, новичок. Я добавил пример иллюстрации к вопросу о том, чего я пытаюсь достичь.
Причина 4 в том, что это изображения с действиями... как если бы они были кнопками/ссылками.
Оперативно - не проблема. Я хотел сказать data-templates/selector (я не указал точное слово в своем последнем комментарии), поэтому шаблон A имеет 4 изображения в одной ячейке, а шаблон 2 получает только одно изображение, с селектором, а данные модели также нуждаются в небольшом украшении.
@user1447679 user1447679 Согласно вашему описанию, я не уверен, в чем ваша проблема. Как сказал Джейсон, вы можете попробовать взглянуть Xamarin.Forms CarouselView Data, и если вы хотите щелкнуть изображение как кнопку, вы можете добавить распознаватель жестов касания в изображение.
Я учусь :) Основная проблема, с которой я столкнулся, заключается не в самой карусели, а в том, чтобы первые 4 элемента находились на одной странице и рассматривались как один элемент карусели. Спасибо. Посмотрю на эту ссылку @CherryBu-MSFT
@ user1447679 Жду ваших отзывов.
Спасибо @CherryBu-MSFT. Я не позволю ему сидеть. Мне пришлось развернуться. Я сделаю это еще раз в ближайшее время. Конечно, если кто-нибудь может предоставить пример кода с каруселью, это было бы здорово. В противном случае я думаю, что смогу понять это и опубликую, когда закончу.
Спасибо всем, пожалуйста, посмотрите мой ответ и разъясните, есть ли лучший способ справиться с этим.