#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>
Комментарии:
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. высота чего?