如何在Xamarin表单中删除ListView中的额外分隔符

时间:2017-06-20 10:54:17

标签: listview xamarin xamarin.forms separator

我是Xamarin Forms的新手。如果这是一个愚蠢的问题,请原谅我。

我创建了Simply ListView。但是我想删除哪一行有空的额外分隔符。

我尝试搜索SO,google和Xamarin表单。但对我来说没有任何帮助。

Xaml代码:

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:ListViewDemo" x:Class="ListViewDemo.ListViewDemoPage">
    <StackLayout Orientation="Vertical"
             VerticalOptions="Fill"
             HorizontalOptions="StartAndExpand">
        <ListView x:Name="MainListView" Margin="0,30,0,0" VerticalOptions="FillAndExpand"  SeparatorColor="Red" BackgroundColor="Gray" HasUnevenRows="true">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="auto" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="auto" />
                            </Grid.RowDefinitions>
                            <Label Text="{Binding Name}" Grid.Column="0" Margin="10,10,0,0">
                            </Label>
                            <Label Text="{Binding Age}" Grid.Column="1" Margin="0,10,10,0">
                            </Label>
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ContentPage>

ListViewDemoPage.cs

using System.Collections.Generic;
using Xamarin.Forms;

namespace ListViewDemo
{
    public partial class ListViewDemoPage : ContentPage
    {
        public ListViewDemoPage()
        {
            InitializeComponent();

            var strings = new List<EmptyClass>
            {
                new EmptyClass{Name = "Harshad Harshad Harshad Harshad Harshad Harshad Harshad Harshad", Age = 23},
                 new EmptyClass{Name = "Sunita", Age = 23},
                 new EmptyClass{Name = "Rahul", Age = 23},
                 new EmptyClass{Name = "Vrushbh", Age = 23},
                 new EmptyClass{Name = "Harmi", Age = 23},
                 new EmptyClass{Name = "Jigu", Age = 23},

            };

            MainListView.ItemsSource = strings; 
        }
    }
}

EmptyClass.cs

using System;
namespace ListViewDemo
{
    public class EmptyClass
    {
        public string Name { get; set; }
        public double Age { get; set; }
        public EmptyClass()
        {
        }
    }
}

任何帮助都要得到赞赏。

2 个答案:

答案 0 :(得分:5)

只需在ListView.ItemTemplate

下添加页脚
<ListView.Footer>
            <StackLayout Orientation="Horizontal">
            </StackLayout>
</ListView.Footer>

完整代码:

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:ListViewDemo" x:Class="ListViewDemo.ListViewDemoPage">
    <ListView x:Name="MainListView" Margin="0,30,0,0" VerticalOptions="FillAndExpand" SeparatorColor="Red" BackgroundColor="Gray" HasUnevenRows="true">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="auto" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="auto" />
                        </Grid.RowDefinitions>
                        <Label Text="{Binding Name}" Grid.Column="0" Margin="10,10,0,0">
                        </Label>
                        <Label Text="{Binding Age}" Grid.Column="1" Margin="0,10,10,0">
                        </Label>
                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
        <ListView.Footer>
            <StackLayout Orientation="Horizontal">
            </StackLayout>
        </ListView.Footer>
    </ListView>
</ContentPage>

答案 1 :(得分:0)

您还可以通过向页脚属性添加空字符串来删除空单元格。

<ListView 
    x:Name="MainListView" 
    Margin="0,30,0,0" 
    VerticalOptions="FillAndExpand" 
    SeparatorColor="Red" 
    BackgroundColor="Gray"
    Footer=""
    HasUnevenRows="true">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                    ....
              <!-- Removed for simplicity -->
                    ....
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.Footer>
        <StackLayout Orientation="Horizontal">
        </StackLayout>
    </ListView.Footer>
</ListView>