2017-05-06 3 views
0

Ich bin ListView, um Elemente auf meinem Bildschirm anzuzeigen. Die angezeigten Elemente variieren in der Anzahl. Also meine Frage ist: wie kann ich die Höhe meines ListView automatisch abhängig von der Anzahl der Elemente? Im Moment habe ich meine ListView besetzt meinen Bildschirm den ganzen Weg nach unten wie das Bild unten.Wie wird `ListView` automatisch in Abhängigkeit von der Anzahl der Objekte in` Xamarin Forms` gesetzt?

enter image description here

Ich mag es wie das Bild unten sehen (die ein TableView verwendet):

enter image description here

PS: ich auf einer PCL Anwendung arbeitete aber offen Renderer zu erstellen. Im Moment arbeite ich nur an der PCL- und iOS-Seite, daher wird iOS-Renderer sehr geschätzt.

Edits: Zusätzlicher XAML-Code:

<ListView x:Name="categoryGroupListView" ItemTapped="openCategoriesPage" HasUnevenRows="true"> 
    <ListView.Header> 
     <StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"> 
      // Header code here 
     </StackLayout> 
    </ListView.Header> 
    <ListView.ItemTemplate> 
     <ListView.DataTemplate> 
      <TextCell Text="{Binding CategoryName}" Detail="{Binding Count}"/> 
     </ListView.DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Antwort

0

Wenn Sie Ihre Reihe variabler Höhe in Ihrer Zeile wie unter Ziffer machen, dann müssen Sie Eigentum (HasunevenRows = „true“) innerhalb Listenansicht verwenden . Beispiel-

     <ListView.ItemTemplate > 
          <DataTemplate> 
           <ViewCell> 
            <ViewCell.View> 
             //..............             
            </ViewCell.View> 
           </ViewCell> 
          </DataTemplate> 
         </ListView.ItemTemplate> 
        </ListView> 
0

Sie können die Check-out Xamarin Evolve app sample dafür. Es hat einige ListViews drin, die TableView Aussehen und Gefühl nachahmen. Es verwendet benutzerdefinierte Klassen wie NonScrollableListView und CardView.

0

Dies ist die Standardeinstellung in iOS. Sie können die zusätzlichen Zellen in der ListView (UITableView) mithilfe eines benutzerdefinierten Renderers entfernen und der Fußzeile eine leere Ansicht hinzufügen.

so etwas wie:

protected override void OnElementChanged(ElementChangedEventArgs<ListView> e) 
{ 
    base.OnElementChanged(e); 

    if (this.Control == null) 
    { 
     return; 
    } 

    this.Control.TableFooterView = new UIView(); 
} 

Dies ist auch möglich, die Fußzeile Eigenschaft direkt auf dem Listview in der Option

<ListView.Footer> 
    <Label /> 
</ListView.Footer> 

Entweder XAML werden die leeren Zellen entfernen.

Hoffe, dass dies hilft.-

Verwandte Themen