2015-10-19 22 views
6

Próbuję pobrać Xamarin Forms, aby wyświetlić listę na liście. Widziałem, jak inni ludzie mówią, że ListView zagnieżdżony w ListView nie jest obsługiwany. Próbowałem dodać kontrolę wewnątrz ListView i powiązać listę zagnieżdżoną z formantem, ale to zawsze powoduje awarię mojej aplikacji, gdy próbuję ją powiązać.Jak wyświetlić zagnieżdżoną listę elementów w Xamarin Forms?

Ja również okazało się, że niektórzy ludzie sugerują użycie zgrupowanie. Grupowanie DOES działa, jednak problemy, które znalazłem z tym, że nie mogę dotknąć sekcji grupowania. Również grupowanie nie będzie aktualizowane w czasie rzeczywistym (jest to wymagane).

Do końcowego wyniku, chciałbym coś tak prostego jak:

  • ApartmentName1
  • Adres
  • Menedżer Numer telefonu
  •           Lokator 1, numer telefonu
  •           Lokator 2, numer telefonu
  •           Lokator 3, numer telefonu
  • ApartmentName2
  • Adres
  • Ilość Menedżer Telefon
  •           Lokator 1, numer telefonu
  •           Lokator 2, numer telefonu
  •           Lokator 3, numer telefonu

Poniżej jest przykład obiekt, który chciałabym aby wyświetlić w moim projekcie Forms Xamarin.

public class Apartment 
{ 
    public string ApartmentName { get; set; } 
    public string Address { get; set; } 
    public string ManagerPhoneNumber { get; set; } 
    public List<Tenant> Tenants { get; set; } 
} 

public class Tenant 
{ 
    public string FullName { get; set; } 
    public string PhoneNumber { get; set; } 
    public DateTime ContractExpireDate { get; set; } 
} 

Tutaj jest XAML Próbowałem dostać się do pracy

<ContentView> 
    <StackLayout> 
    <ListView x:Name="apartmentListView" HasUnevenRows="True"> 
     <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 
      <ViewCell.View> 
       <StackLayout VerticalOptions="StartAndExpand"> 
       <StackLayout Orientation="Horizontal" BackgroundColor="Gray"> 
        <Label HorizontalOptions="StartAndExpand" Text="{Binding ApartmentName}" /> 
        <Label HorizontalOptions="End" Text="{Binding Address}" /> 
       </StackLayout> 
       <Label Text="{Binding ManagerPhoneNumber}" /> 
       <control:TenantViewTemplate Tenants="{Binding Tenants}" /> 
       </StackLayout> 
      </ViewCell.View> 
      </ViewCell> 
     </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
    </StackLayout> 
</ContentView> 

Ja tylko próbuje pokazać listę, która zawiera listę. Jestem otwarty na wszelkie sugestie, jak to zrobić poprzez Xamarin Forms.

Odpowiedz

1

powiedziałbym pominąć XAML i po prostu położyć go na zewnątrz, jak chcesz w kodzie.

Użyj StackLayouts i \ lub Grids i nie polegaj na semi magicznym wiązaniu datView. Kilka razy teraz zacząłem od ListView tylko po to, by dojść do punktu później, że zgarnęło to poszło z ForEachLoop. Możesz zrobić wszystko w kodzie, który możesz zrobić w XAML, a na końcu będziesz szczęśliwszy.

+1

czy to jest odpowiedź czy zalecenie? –

+1

Nie wierzę w to. Pisanie swojego interfejsu w XAML jest najlepszym podejściem, jeśli złapiesz niektóre książki, zobaczysz zalecenia. –

+0

Przeczytaj książki kolega. To go nie zmienia. W końcu dopóki nie będzie edytora WYSIWYG XAML nie ma żadnych zalet w stosunku do czystego kodu. 1. Działa wolniej. 2. Rozwój nie ma debuggera i małej intellisense. 3. Jest bardziej szczegółowy niż kod, zakładając, że utrzymujesz swój kod w czystości. Takie sytuacje pojawiają się cały czas i jeśli OP użył C# do rozpoczęcia tego, nigdy nie byłby to problem. – David

4

Gdybym chciał, aby wyświetlić listę odmiennych elementów Prawdopodobnie użyć Tableview zamiast ListView. TableViews nie są danymi, więc trzeba je konstruować ręcznie, ale pozwalają one na elastyczność posiadania różnych typów komórek w zależności od danych wyświetlanych w każdym wierszu.

Jeśli chcesz trzymać zgrupowane ListView, można utworzyć widok niestandardowy nagłówek grupy, która zawiera przycisk (lub inny element), który może reagować wykorzystać gesty.

+0

pytanie jasne, ale ma zapach jako UWP (lub WPF) xaml. mamy takie samo złe doświadczenie. Nie mam czasu na zagubienie, aby wypróbować bez xaml, czy powinienem spróbować manualnego wiązania listview dla dzieci? –

Powiązane problemy