2017-05-03 42 views
2

所以讓我吃驚,我還沒有發現關於這個具體問題的網頁或SO上的任何東西。我試圖讓我的listview分隔符插入全寬。我已經在桌面上找到了關於此的文檔,here。但是我不清楚如何爲listview做這件事?我使用Xamarin Forms listview,嘗試在iOS上完成此操作。我想我必須寫一個自定義的渲染器,因爲沒有(公開暴露的)屬性可用於listview的窗體上。列表視圖分離插圖全寬

這是正在發生的事情對我的列表視圖好的圖片,雖然顯示的圖像是由有關的tableview,而不是列表視圖一個SO問題,但這個問題似乎是相同的。

enter image description here

回答

2

你是正確的,有不通過Xamarin露出的屬性窗體ListView(其最終renders as a UITableView on iOS)來改變所述隔板的寬度。如果你想自己改變分隔符,你將不得不求助於自定義渲染器,並實現你在另一個SO問題中找到的東西。

作爲一種變通方法,您可以禁用分離的知名度,然後添加的BoxView 1高度模擬全寬分隔。

+0

@jdmdevdotnet鋸[此](http://depblog.weblogs.us/2017/04/29/xamarin-forms-custom-listview-separator-without- boxview)就在這一天。 – hvaughan3

+1

@ hvaughan3請記住,斯特凡您的鏈接評論是一個有效的,嵌套'StackLayout'而不是使用'BoxView'可能不是關於性能的最佳選擇。 –

+0

好點,完全同意你的看法。這就是爲什麼我從來沒有實現類似鏈接中的東西的原因。 – hvaughan3

2

我設法列表視圖分離使用自定義渲染器去全寬。

測試在iOS 11.

[assembly: ExportRenderer(typeof(CustomListView), typeof(CustomListViewRenderer))] 
namespace MasterDetailNav1.iOS.CustomRenderers 
{ 
    public class CustomListViewRenderer : ListViewRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<ListView> e) 
     { 
      base.OnElementChanged(e); 

      if (Control != null) 
      { 
       Control.SeparatorInset = UIEdgeInsets.Zero; 
      } 
     } 
    } 
}