2015-10-19 10 views
6

私はXamarin Formsにリスト内のリストを表示させようとしています。私は他の人がListView内でネストされたListViewはサポートされていないと言っているのを見ました。私はListView内のコントロールを追加しようとし、コントロールにネストされたリストをバインドしようとしたが、いつでもバインドしようとすると、いつでもアプリケーションがクラッシュする。Xamarinフォームにアイテムのネストされたリストを表示するにはどうすればよいですか?

私はまた、グループを使用するように勧めている人もいます。グループ化は機能しますが、私が見つけた問題はグループ化セクションをタップできないことです。また、グループ分けはリアルタイムで更新されません(これは要件です)。

  • ApartmentName1
  • 住所
  • マネージャー電話番号
  •          テナント1、電話番号
  • :最終的な結果については

    は、私はのような単純な何かをしたいと思います
  •          テナント2、電話番号
  •          テナント3、電話番号
  • ApartmentName2
  • 住所
  • マネージャの電話番号
  •          テナント1、電話番号
  •          テナント2、電話番号
  •          テナント3、電話番号の下

は、私は私の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; } 
} 

は私が唯一のリストが含まれているリストを表示しようとしています

<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> 

を動作させるためにしようとしましたXAMLです。私はXamarin Formsを使ってこれを行う方法について提案しています。

答えて

1

私はXAMLをスキップし、コード内に必要な方法でレイアウトするといいでしょう。

StackLayoutsと\またはGridを使用し、半魔法のListViewsデータバインディングには依存しません。何度かListViewを使い始めると、あとで覚えておくと、それはForEachLoopと一緒になってしまいました。 XAMLでできることは何でもできますし、最終的にはもっと幸せになるでしょう。

+1

それは答えか推薦ですか? –

+1

私はそれを信じていません。あなたのUIをXAMLに書くのが最善のアプローチです。もしあなたがいくつかの本をキャッチすれば、その推奨事項を見ることができます。 –

+0

仲間の本を読んでください。それはそれを変えない。最後に、WYSIWYGエディタがあるまで、XAMLは純粋なコードに比べて利点がありません。 1.それはより遅く実行します。 2.開発にはデバッガがなく、インテリセンスもほとんどありません。 3.あなたのコードをきれいに保つことを前提とした、より冗長なコード。このような状況はいつも起きています。もしOPがこれを始めるためにC#を使っていたなら、決して問題にならなかったでしょう。 – David

4

異なるアイテムのリストを表示しようとすると、おそらくListViewの代わりにTableViewを使用します。 TableViewはデータバインドされていないため、手動で作成する必要がありますが、各行に表示されるデータに応じて異なるタイプのセルを持つことができます。

グループ化されたListViewを使用する場合は、タップジェスチャーに応答できるボタン(またはその他の要素)を含むカスタムグループヘッダービューを作成できます。

+0

質問がありましたが、UWP(またはWPF)xamlとして匂いがします。私たちは同じ悪い経験をしています。私はxamlなしで試して迷子になる時間がありません。 –

関連する問題