2017-12-17 10 views
2

MVVMとバインディングを使用してXamarianフォームでリストビューを作成し、グループ化されたリストビューを作成しました。リストビューにiOS向けのUITableViewスタイルグループが必要です。私はオンラインで見つけたカスタムレンダラを使ってこれを作成しようとしましたが、結果はすべてが灰色であるので間違っています。Xamarinフォーム - ヘッダー付きのiOS ListViewネイティブグループスタイルを作成するには?

まず、画像から始めます。これは私がテーブルに私はネイティブのiOS版から取ったwhcihに見えるようにしたいものです:私はXamarinのために、次の取得のカスタムレンダラを追加すると

Histroy Grouped

形成バージョン:

Xamarin Forms Custom Listview

背景色を透明にしようとしていましたが、私がlistview background color = "Transparent"を作成したときに、元のリストビューが表示されていました。次の2つの画像に示されています。

enter image description here

enter image description here

次のようにXAMLページは次のとおりです。

<StackLayout Spacing="0"> 
    <SearchBar x:Name="SearchBarControl" Text="{Binding SearchText}" SearchCommand="{Binding SearchCommand}" Placeholder="Search"></SearchBar> 
    <ListView x:Name="HistoryList" IsGroupingEnabled="True" GroupDisplayBinding="{Binding Title}" ItemsSource="{Binding History}" CachingStrategy="RecycleElement"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <TextCell Text="{Binding TagContent}" Detail="{Binding DateAndTime}" /> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
</StackLayout> 

私はそれをグループ化するべきと考えているカスタムレンダラ:

[assembly: ExportRenderer(typeof(ListView), typeof(iOSListViewCustomRenderer))] 
namespace Test.iOS.CustomRenderer 
{ 
    public class iOSListViewCustomRenderer : ListViewRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<ListView> e) 
     { 
      base.OnElementChanged(e); 
      if (this.Control != null && e.NewElement != null) 
      { 
       var tbl = new UITableView(this.Bounds, UITableViewStyle.Grouped) 
       { 
        Source = this.Control.Source, 
       }; 

       this.SetNativeControl(tbl); 
      } 
     } 
    } 
} 

誰がする必要がある場合何かを見て、私に知らせてください。

フォームのtableviewコントロールは私には適切な外観を与えますが、静的コンテンツであり、SQLデータベースからの動的情報ではないようです。

カスタムセルを作成してセルを白くしようとしましたが、何も変わりませんでした。

xamarinフォームのリストビューを、セルが白でスタイリングされたグループにある最初のイメージのように見えるようにするにはどうすればよいですか?

+0

を参照してください? –

+0

@RohitVipinMathewsそれはどういう意味ですか?上記のXAMLでは、IsGroupingEnabled = "True" GroupDisplayBinding = "{Binding Title}"を追加しました。それはあなたが言及していることですか?それはグループ化されますが、iOSグループ化されたバージョンではなく通常のリストフォームになります。 – SolidSnake4444

+0

'SetNativeControl'を実行すると、すべてのレイアウトと配置があなたの責任です。 –

答えて

1

Custom Renderersの代わりにGroupHeaderTemplateを使用することをおすすめします。

通常のスタイルを使用する代わりに、listViewのカスタムグループヘッダーを使用できます。

<ListView.GroupHeaderTemplate> 
    <DataTemplate> 
     <ViewCell Height="50" > 
      <ViewCell.View> 
       <StackLayout > 
        <Label Text ="{Binding Title}" Margin="15,30,0,5" FontSize="Medium" TextColor="Gray" /> 
       </StackLayout> 
      </ViewCell.View> 
     </ViewCell> 
    </DataTemplate> 
</ListView.GroupHeaderTemplate> 

GroupDisplayBinding一切必要ありませんし、セルの高さを増す可能にするためにHasUnevenRowsに設定されています。

<ListView x:Name="listView" IsGroupingEnabled="True" HasUnevenRows="True"> 

enter image description here

リストビューグループプロパティを使用しないのはなぜ詳細はHere

+0

私はむしろ、実際のiOSネイティブのグループ化されたスタイルを偽造する代わりに使用したいと考えています。 AndroidとUWPは、そのままの状態を保つことができます。 – SolidSnake4444

+0

これはネイティブiOSグループのスタイルではないと思われるのはなぜですか?ソースコードを見て、Xamarin FormsがiOS上でグループ化されたヘッダーを実装する方法を確認しましたか? –

+0

@SteveChadbourneヘッダ3の下の画像では、通常のリストビューであるグループ化されていないスタイルに戻ることがわかります。私の最初のイメージでは実際に見ることはできませんが、そのリストの一番下は純粋な灰色です。 iPhoneを持っている場合は設定アプリを開き、そこをスクロールします。それは私が取り組んでいるネイティブのグループ化されたビューです。ボトムは空白セルの永遠のリストではなく、グレーです。 – SolidSnake4444

関連する問題