2017-12-17 15 views
2

MVVM 및 바인딩을 사용하여 Xamarian Forms에서 listview를 작성하여 그룹화 된 listview를 작성했습니다. listview가 iOS 용 UITableView Style 그룹을 갖기를 바랍니다. 나는 온라인에서 찾은 커스텀 렌더러를 통해 이것을 만들려고했으나, 결과는 모두 회색으로 보이기 때문에 잘못되었다.Xamarin Forms - 헤더가있는 iOS ListView 네이티브 그룹 스타일을 만드는 방법?

먼저 이미지부터 시작하겠습니다. 이것은 내가 테이블 내가 네이티브 iOS 버전에서했다 whcih과 같이 할 것입니다 : 나는이 (가) 자 마린에 대해 다음 얻을 사용자 정의 렌더러를 추가 할 때

Histroy Grouped

형성 버전 :

Xamarin Forms Custom Listview

배경색을 투명하게 만들려고했는데 원래 listview가있는 listview background color = "Transparent"를 만들었습니다. 다음 두 이미지에 표시됩니다.

[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); 
      } 
     } 
    } 
} 

사람이 할 필요가있는 경우 :

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

내가 믿는 사용자 정의 렌더러는 그룹화해야 다음과 같이

enter image description here

enter image description here

XAML 페이지입니다 다른 것을보고, 알려줘.

양식에서 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

나는 진짜 아이폰 OS 네이티브 그룹 스타일을 속이는 대신에 갖고 싶다. Android와 UWP는 그대로있을 수 있습니다. – SolidSnake4444

+0

이것이 왜 iOS 그룹의 기본 스타일이 아니라고 생각합니까? Xamarin Forms가 iOS에서 그룹화 된 헤더를 구현하는 방법을 보려면 소스 코드를 살펴 보셨습니까? –

+0

@SteveChadbourne 헤더 3 아래의 이미지에서 일반 목록보기 인 그룹화되지 않은 스타일로 돌아가는 것을 볼 수 있습니다. 첫 번째 이미지에서는 실제로 그것을 볼 수 없지만 그 목록의 맨 아래는 순수한 회색입니다. iPhone이있는 경우 설정 앱을 열고 거기에서 스크롤합니다. 그것이 내가 취하는 네이티브 그룹화 된 뷰입니다. 하단은 빈 셀을 영원히 목록 화하는 대신 회색입니다. – SolidSnake4444