我正在使用XamarinForms v4.2,Prism.Dryloc v7.2和Refit在xamarin-forms上开发我的第一款应用程序。
我的菜单页上有3个collectionview
Web服务填充了前两个,并且它们工作得很好,我需要选择每个服务中的一个,并且我试图将所选项目绑定到Cart集合,我正在调试以了解其工作方式,但是在选择的瞬间出现在我的调试控制台上:
"[0:] Binding: KioscoColab.Models.Menu can not be converted to type 'System.Collections.ObjectModel.ObservableCollection'1[KioscoColab.Models.Menu]
这是我的代码:
ViewModel
...
ObservableCollection<Menu> _food;
ObservableCollection<Menu> _drinks;
ObservableCollection<Menu> _cart;
public ObservableCollection<Menu> Food
{
get => _food;
set => SetProperty(ref _food, value);
}
public ObservableCollection<Menu> Drinks
{
get => _drinks;
set => SetProperty(ref _drinks, value);
}
public ObservableCollection<Menu> Cart
{
get => _cart;
set => SetProperty(ref _cart, value);
}
...
public async Task LoadMenu()
{
//Here is my logic for the web service
...
Food = new ObservableCollection<Menu>(food.Content);
Drinks = new ObservableCollection<Menu>(drinks.Content);
Cart = new ObservableCollection<Menu>();
}
...
XamlPage
<!-- CollectionView Food-->
<CollectionView
Grid.Row="1"
Grid.Column="0"
Margin="5"
ItemsSource="{Binding Food}"
SelectedItem="{Binding Cart, Mode=TwoWay}"
SelectionMode="Single"
VerticalScrollBarVisibility="Always">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Vertical" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
FontSize="Medium"
Text="{Binding Description}"
VerticalOptions="Center" />
<Label
Grid.Column="1"
FontSize="Medium"
HorizontalTextAlignment="End"
Text="{Binding Price, StringFormat='{0:C}'}"
VerticalOptions="Center" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
<!-- CollectionView Cart -->
<CollectionView
Grid.Row="1"
Grid.Column="1"
Margin="5"
ItemsSource="{Binding Cart}"
VerticalScrollBarVisibility="Always">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Vertical" Span="2" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
FontSize="18"
Text="{Binding Description}"
VerticalOptions="Center" />
<Label
Grid.Column="1"
FontSize="18"
Text="{Binding Price}"
VerticalOptions="End" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
如何制作演员?还是我该怎么办?