如何在ListView中向DataTemplate添加其他元素?

问题描述 投票:1回答:3

在我的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>
c# xaml xamarin xamarin.forms xamarin.android
3个回答
2
投票

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>

1
投票

您可以使用viewcell而不是imagecell。在viewcell中你可以使用布局和那里的图像,标签和按钮


1
投票

而不是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>
© www.soinside.com 2019 - 2024. All rights reserved.