Просмотр коллекции Xamarin не отображается

#xamarin.forms

#xamarin.forms

Вопрос:

У меня есть ListView и CollectionView (Xam 4 pre-8). Я добавил ListView, чтобы доказать, что элементы отображаются. Привязка отображается правильно, и я добавил Xam 4 ко всем проектам. Представление коллекции не отображается. Почему?

AppDelegate:

         public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        Forms.SetFlags("CollectionView_Experimental");
        global::Xamarin.Forms.Forms.Init();

        LoadApplication(new App());

        return base.FinishedLaunching(app, options);
    }
 

Страница содержимого:

 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:viewmodels="clr-namespace:RecipeTonight.Mobile.ViewModels"
         x:Class="RecipeTonight.Mobile.Views.WelcomePage"
         NavigationPage.HasNavigationBar="False"

         >
<ContentPage.Content >
    <StackLayout VerticalOptions="CenterAndExpand"
        Margin="20"
        BackgroundColor="#e9e9e9"

        >
        <Label Text="Hello World" />
        <CollectionView ItemsSource="{Binding RecipeList}" >
            <CollectionView.ItemTemplate>
                <DataTemplate>

                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>

                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>

                        <Label Grid.Row="0" Grid.Column="0"
                   Text="Test"
                   FontAttributes="Italic"
                   VerticalOptions="End" />
                    </Grid>
                </DataTemplate>
            </CollectionView.ItemTemplate>

        </CollectionView>
        <ListView ItemsSource="{Binding RecipeList}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell Height="40">
                        <Label Text="{Binding Title}"></Label>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ContentPage.Content>
 

На экране я вижу Симулятор iOS

Комментарии:

1. попробуйте назначить высоту.

2. @Jason потрясающее спасибо!

Ответ №1:

Для меня ошибка была более общей, но это была первая страница, которую я нашел при поиске справки, поэтому, возможно, мое решение кому-нибудь пригодится:

Не забудьте установить для вашего ItemSource значение public в коде.

т. е.

 //XAML

<CollectionView ItemsSource="{Binding RecipeList}" >
     ...etc



//C#

public List<RecipeItem> RecipeList {get; set;} // <---- PUBLIC!
 

Ответ №2:

В моем случае проблема заключалась в том, что я неправильно написал имена свойств (т. Е. Я использовал все имена свойств с заглавной буквы). В отличие от ListView, в CollectionView нет строк между элементами, чтобы сообщить вам, что что-то есть.

Ответ №3:

@Jason был прав. Установите высоту

Комментарии:

1. высота чего?