2017-04-03 21 views
0

いくつかのセクションを持つページを作成しようとしていますが、そのうちの2つにはListView context actionsのメリットがある短いリストが含まれています。 ListViewを含むTableViewを使用すると、非常に適しているようです。しかし、それは動作していないようです。Xamarin Forms ListView in TableView

TableViewとListViewの両方でスクロールが実装されていることが、この問題の原因となる可能性があります。この使用例では、ListViewをスクロールしたくありません。 ListViewをTableViewにネストする方法はありますか?この種のUIを提示するための他のアプローチはありますか?

答えて

0

スクロールは確かにこのアプローチの問題であり、2つのコントロールはうまく組み合わせません。

見出しのあるセクションが必要な場合は、グループ化されたListViewを使用するのが最もよい方法です。

データを最初にグループ化する必要があります。以下は例です。

public class PersonList : List<Person> 
{ 
    public string Heading { get; set; } 
    public List<Person> Persons => this; 
} 

ListViewで、IsGroupingEnabledを使用してグループ化を有効にしてから、GroupHeaderTemplateを提供する必要があります。

<ListView ItemsSource="{Binding MyGroupedData}" 
      IsGroupingEnabled="true"> 
    <ListView.GroupHeaderTemplate> 
     <DataTemplate> 
      <ViewCell> 
       <Label Text="{Binding Heading}" /> 
      </ViewCell> 
     </DataTemplate> 
    </ListView.GroupHeaderTemplate> 

    <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 

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

例から撮影:あなたが固定ListView.RowHeightを指定し、ヘッダーやフッターを使用しない場合はXamarin Forms ListView Grouping

+0

ListViewグループの外観がTableViewセクションと異なるため、アプリケーションの他の部分でTableViewsを使用すると、ListViewハックのページのUIが矛盾します。基本的な問題は、2つのセクションのデータ収集が根本的に異なり、グループ化イディオムが伝えるように設計されているものとは逆のことです。 –

+0

ListViewの見出しのルック・アンド・フィールを変更することができます。異なる種類のデータをグループ化する場合、DataTemplateSelectorを使用できます。それ以外の場合は、カスタムStackLayoutまたはGrid、またはカスタムTableViewCellを作成し、ContextActionsを使用してその機能全体を手動で作成することもできます。 –

+0

どちらのオプションも簡単ではないようです。 :-(すべてのプラットフォームとOSバージョンの間で、TableViewセクションの見出しのネイティブUIを模倣しようとすると、多くの作業のように聞こえるようになるでしょう。 –

0

、それは(テーブルビューに含まれているなど)のListViewが別のScrollView内で動作することが判明しました。ユーザーエクスペリエンスは完全ではありません。ListViewがスクロールジェスチャーを受け取ったにもかかわらず、外部ビューをスクロールする必要がない場合、ListViewはユーザーにスクロールできる虚偽のフィードバックを与えます。たとえば、Xamarin Evolveアプリでこれを見ることができます。

リストビューは、その高さをすばやく計算できるため、この状況で機能します。行の高さが一貫性がなく、事前にわかっていない場合、ListViewはそのコンテナに、ページと同じ高さであることを通知します。これは、外側のScrollViewが額面で取る値です。

この制限はそれほど悪くありません。固定高さの行がない場合は、コンテキスト・アクションが必ずしも良好に見えるとは限りません。また、詳細ページにコマンドを置くなどの別の設計手法が適しています。

別のgotcahは、身長を自分で測定しない限り、iOSのTableViewでcan't put variable-sized cellsです。グループ化の別のアプローチは、フレームを使用することです。

関連する問題