Como ocultar as linhas vazias de uma visualização de lista em xamarin.forms

Eu tenho um StackLayout com um ListView e eu tenho um botão de adicionar que eu quero exibir logo abaixo do ListView . Mas o ListView exibe várias linhas que não são usadas. Apenas linhas vazias, isso está forçando meu botão para exibir na parte inferior da página. Eu estive mexendo com o VerticalOptions todos os dias, mas não consigo fazer as linhas desaparecerem.

Este é o meu código XAML:

    

Imagem da lista e botão:

Imagem da lista e o botão adicionar

Então, a solução que encontrei é forçar o layout listview toda vez que você adicionar / remover um item. Você também precisa include a lista no stacklayout.

                             

Porque você conhece a altura de sua célula, você pode fazer isso:

  void AddItemClicked(object sender, EventArgs e) { SampleData data = new SampleData(); data.ItemText = "An Item"; data.ItemDetail = "Item - " + (itemsListCollection.Count + 1).ToString(); itemsListCollection.Add(data); ItemsListView.HeightRequest = itemsListCollection.Count * 60; //ForceLayout(); } void RemoveItemClicked(object sender, EventArgs e) { SampleData item =(SampleData)((MenuItem)sender).CommandParameter; if (item != null) { itemsListCollection.Remove(item); } ItemsListView.HeightRequest = itemsListCollection.Count * 60; } class SampleData:INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string itemText; public string ItemText { get { return itemText; } set { itemText = value; NotifyPropertyChanged("ItemText"); } } private string itemDetail; public string ItemDetail { get { return itemDetail; } set { itemDetail = value; NotifyPropertyChanged("ItemDetail"); } } private void NotifyPropertyChanged(string propName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propName)); } } } 

insira a descrição da imagem aqui

Olá a todos,

  public class Test { string Name{get;set;} } 

Declarar globalmente

  ObservableCollection objWithEmpty; 

No Construtor:

  objWithEmpty=new ObservableCollection(); objWithEmpty.Add(new Test(){"Venky"}); objWithEmpty.Add(new Test(){""}); objWithEmpty.Add(new Test(){"Raju"}); 

Agora pegue mais um ObservableCollection e verifique a condição como por sua exigência sem vazio, em seguida, adicione esse item à coleção objWithOutEmpty e, finalmente, adicione objWithOutEmpty ItemsSource ao ListView.

  ObservableCollection objWithOutEmpty; foreach(var item in objWithEmpty) { if(item.Name !=null) { objWithOutEmpty.Add(new Test(){item.Name}); } }; 

Agora defina ItemsSource para o ListView

  listView.ItemsSource=objWithOutEmpty; 
    Intereting Posts