在我的Xamarin.Forms XAML文件中,我有一个列表,我在ImageCell
中使用DataTemplate
来显示项目。到目前为止,我已经想出如何为每个项目显示两个文本和一个图像,但我还想添加一个按钮。
我尝试在ImageCell
中放置一些东西,但是我收到以下错误:
无法设置ImageCell的内容,因为它没有ContentPropertyAttribute
我查了如何使用ContentPropertyAttribute
,但documentation并没有真正解释如何使用它。
如何为每个DataTemplate
添加其他元素?
<ListView ItemsSource="{Binding}" x:Name="Results">
<ListView.ItemTemplate>
<DataTemplate>
<ImageCell ImageSource="{Binding picture}" Text="{Binding name}" Detail="{Binding category}">
<Button Text="test" />
</ImageCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ListView中的数据显示在单元格中。每个单元格对应一行数据。
由于您想要连续获得的数据多于ImageCell
提供的数据,因此您可以使用ViewCell
构建ListView
行中显示的内容。
例:
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Image ImageSource="{Binding picture}"/>
<Label Text="{Binding name}" />
<Button Text="Details" Command="{Binding DetailCommand}" />
</StackLayout>
</ViewCell>
</DataTemplate>
您可以使用viewcell而不是imagecell。在viewcell中你可以使用布局和那里的图像,标签和按钮
而不是ImageCell
,你应该使用ViewCell
并在ViewCell
中添加自定义元素。
<ListView ItemsSource="{Binding}" x:Name="Results">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout BackgroundColor="#eee" Orientation="Vertical">
<StackLayout Orientation="Horizontal">
<Image Source="{Binding picture}" />
<Label Text="{Binding name}" TextColor="#f35e20" />
<Label Text="{Binding category}" TextColor="#f35e20" />
<Button Text="test" />
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>