Вложенные CollectionViews и отображение (с помощью Visual Studio 2019, Xamarin XPlatform Android) - PullRequest
0 голосов
/ 22 апреля 2019
  1. Вложенный CollectionView с прокруткой внутри другой: поддерживается ли он официально?
  2. Показать проблему этих коллекций

См. Ниже мою модель данных и код XAML (у меня естьнет места для размещения полученного изображения экрана)

namespace Notes.Models
{
    public class Note
    {
        public enum NoteStatus { suspended, alive }

        public string       Description { get; set; }
        public NoteStatus   Status { get; set; }
    }

    public class NotesContainer
    {
        public string                       Name { get; set; }
        public DateTime                     LastModified { get; set; }
        public ObservableCollection<Note>   ListOfNotes { get; set; }
    }
}
  <CollectionView x:Name="notesContainers" SelectionMode="Single" EmptyView="No items currently exist !">
    <CollectionView.ItemTemplate>
      <DataTemplate>
        <Frame BorderColor="Red" BackgroundColor="Beige" CornerRadius="3" HasShadow="False" Padding="5">
          <StackLayout BackgroundColor="Aqua" Padding="5">
            <Grid>
              <Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition Height="auto"/></Grid.RowDefinitions>
              <Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions>
              <Label Grid.RowSpan="2" Text="{Binding Name}" VerticalTextAlignment="Center" FontSize="Large"/>
              <Label Grid.Row="0" Grid.Column="1" Text="{Binding LastModified, StringFormat='\{0:dddd dd}'}" HorizontalTextAlignment="End"/>
              <Label Grid.Row="1" Grid.Column="1" Text="{Binding LastModified, StringFormat='\{0:MMMM yyyy}'}" HorizontalTextAlignment="End"/>
            </Grid>
            <StackLayout BackgroundColor="BlueViolet" Padding="10">
              <CollectionView ItemsSource="{Binding ListOfNotes}" SelectionMode="Single" EmptyView="No items currently exist !">
                <CollectionView.ItemTemplate>
                  <DataTemplate>
            <StackLayout BackgroundColor="Coral" Padding="0,3">
                    <Frame BorderColor="Blue" BackgroundColor="LightBlue" CornerRadius="3" HasShadow="False" Padding="5">
                      <StackLayout Orientation="Horizontal">
                        <Label Text="{Binding Description}" HorizontalOptions="Start" VerticalTextAlignment="Center"/>
                        <Label Text="{Binding Status}" HorizontalOptions="EndAndExpand" VerticalTextAlignment="Center" HorizontalTextAlignment="End"/>
                      </StackLayout>
                    </Frame>
             </StackLayout>
                 </DataTemplate>
                </CollectionView.ItemTemplate>
              </CollectionView>
            </StackLayout>
          </StackLayout>
        </Frame>
      </DataTemplate>
    </CollectionView.ItemTemplate>
  </CollectionView>

снимок внешнего и внутреннего видов коллекций Я акцентировал цвета, чтобы лучше видеть макеты без сжатия.

Вопросы: (Я пробовал несколько конфигураций, но без решения)
1. Как я могу сжать StackLayouts до его содержимого?
2. Почему StackLayouts удлиняется больше размера экрана?

1 Ответ

0 голосов
/ 22 апреля 2019

Вложенный CollectionView с прокруткой внутри другого: официально поддерживается?

Насколько мне известно, вложенные CollectionViews поддерживаются не всеми платформами, поскольку в них есть свиток, а вложенные ScrollViews являются широко известной плохой практикой.

Показать проблему с этими коллекциями

Я не мог понять, что именно вы имели в виду здесь, но если бы вы могли уточнить, может быть, я смог бы вам помочь.

Как мне сжать StackLayouts до его содержимого?

Если установить Spacing на 0, это будет хорошим началом!

Я ожидаю, что StackLayouts будет длиннее, чем размер экрана, как в приведенном выше коде и нескольких данных

Это ваш StackLayout, занимающий весь экран? (Тот, который находится в ItemTemplate?)

...