2017-11-26 1 views
0

ListView 내부에 표가 있고 각 목록보기 항목 내에 2 열 격자를 표시하려고합니다.xamarin 격자 레이아웃에 데이터가 표시되지 않습니다.

그래서 나는 그것이 easyer 것 문질러서 나는 내 했단는 "dynmaci 데이터 구조"를 제공하기 때문에 가능한 한 포괄적로 유지하고 싶은 이후 모델 (JSON)에 그것을 해결하기 위해 whant하지 않는

XAML 뒤에 코드에서이 작업을 수행합니다 :

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="Analytics.Views.AnlDataPage"> 
</ContentPage> 

을 꽤 정직 마법이 장면 뒤에 무슨 일이 일어나고 있기 때문이다.

숨김

public partial class AnlDataPage : ContentPage 
{ 
    AnlDataModel _model; 

    public AnlDataPage(WfDataCollection objectData) 
    { 
     InitializeComponent(); 
     BindingContext = _model = new AnlDataModel(objectData); 
     Populate(); 
    } 

    public void Populate() 
    { 

     var AnlDataTemplate = new DataTemplate(() => 
     { 
      var grid = new Grid(); 
      grid.ColumnDefinitions = new ColumnDefinitionCollection 
      { 
       new ColumnDefinition { 
        Width = new GridLength(1, GridUnitType.Star) 
       }, 
       new ColumnDefinition { 
        Width = new GridLength(1, GridUnitType.Star) 
       } 
      }; 



      if (_model.Columns != null) 
      { 
       int i = 0; 
       foreach (WfDataColumn column in _model.Columns) 
       { 
        grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); 

        Label columnLabel = new Label { 
         Text = _model.ObjectData.Translations[column.LangKey], 
        }; 
        Label valueLabel = new Label 
        { 
         Text = "some value", 
        }; 
        grid.Children.Add(columnLabel, 0, i); 
        grid.Children.Add(valueLabel, 1, i); 

        i++; 
       } 
      }     

      return new ViewCell { View = grid }; 
     }); 

     Content = new StackLayout 
     { 
      Margin = new Thickness(20), 
      Children = { 
      new ListView { ItemsSource = _model.Data, ItemTemplate = AnlDataTemplate, Margin = new Thickness(0, 20, 0, 0) } 
      } 
     }; 
    } 
} 

출력리스트 뷰가 표시되고, 행의 높이 데이터 좋은 모습이다.

그러나 listItem에는 아무 것도 표시되지 않습니다.

grid.Children.Add(item,left,top)lefttop을 생략하면 레이블이 모두 표시되지만 c는 겹칩니다.

답변

0

동일한 문제가 발생하는 경우.

기본적으로. 나의 처음 aproach는 완전하게 좋았다. 유일한 문제는 높이가 고르지 않은 행이있는 경우 하나를 설정해야한다는 것입니다. Xamarin.Forms.ListView.HasUnevenRows Property

마녀는 내가 예상했던대로 뭔가 다른 것입니다.

Content = new StackLayout 
    { 
     Margin = new Thickness(20), 
     Children = { 
      new ListView { 
       HasUnevenRows = true, 
       ItemsSource = _model.Data, 
       ItemTemplate = AnlDataTemplate, 
       Margin = new Thickness(0, 20, 0, 0) 
      } 
     } 
    }; 
관련 문제