在ListView中的StackLayout中使用TextCell

时间:2018-02-25 11:24:50

标签: xaml xamarin xamarin.forms

为什么我不能在TextCell项目模板中使用这样的ListView?当我使用它时,行呈现但它们是空的。

    <ListView ItemsSource="{Binding Courses}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Orientation="Vertical">
                            <TextCell Text="{Binding Title}" Detail="{Binding SubTitle}"></TextCell>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

使用Label时,我可以看到每行中的文字内容:

    <ListView ItemsSource="{Binding Courses}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Orientation="Vertical">
                        <Label Text="{Binding Title}"></Label>
                        <Label Text="{Binding SubTitle}"></Label>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

无论如何我可以使用列表项模板中的TextCell吗?我正在尝试在StackLayout内部构建一个更加完整的文本,如果我可以重新使用TextCell的标题/详细信息结构,它将会大大简化。

2 个答案:

答案 0 :(得分:2)

根据Xamarin.Forms Cell Reference,单元格只能添加到ListViewsTableViews。特别是,它说:

  

然而,Cell不是一个可视元素,它只是描述了一个模板   创建视觉元素。

因此无法直接添加到StackLayout的子节点。你必须创建一个带有自定义模板的ViewCell ..你可以查看Github上的源代码,找出TextCell在它的Text和TextDetail标签之间使用的正确间距,以保持一致

答案 1 :(得分:0)

您可以在文本单元格中使用堆栈布局! 这是使用它的方法。

   <TextCell>
      <TextCell.BindingContext>
         <StackLayout Orientation="Horizontal" >                      
            <Label Text="{Binding Name}"
             HorizontalOptions="CenterAndExpand" TextColor="Black"/>
            <Label Text="{Binding Description}"  
             HorizontalOptions="CenterAndExpand" TextColor="Black"/>
           <Label Text="{Binding Price}"  
            HorizontalOptions="CenterAndExpand" TextColor="Black"/>
         </StackLayout>                       
        </TextCell.BindingContext>
       </TextCell>