List <list <string >>을 소스로 사용하고 그리드를 데이터 템플릿으로 사용하여 목록보기를 생성합니다.

Sherif Awad

Structure.Values는 List <list>입니다.

코드 뒤에서 listviewdata 템플릿을 설정했습니다.

var grid = new grid();
grid.columnspacing = 0;
grid.rowspacing = 0;
grid.backgroundcolor = color.black;
grid.columndefinitions = new columndefinitioncollection();
grid.rowdefinitions = new rowdefinitioncollection();
grid = creategridrowscolumns(datalist, grid);
var tapgesturerecognizer = new tapgesturerecognizer();
tapgesturerecognizer.setbinding(tapgesturerecognizer.commandproperty, new binding("bindingcontext.detailscommand", source: listviewm));
tapgesturerecognizer.setbinding(tapgesturerecognizer.commandparameterproperty, ".");
grid.gesturerecognizers.add(tapgesturerecognizer);

그리드 데이터를 다음과 같이 설정하는 데이터

    private Grid CreateGridRowsColumns(IEnumerable list, Grid grid)
    {
        var lst = list as List<List<string>>;
        int row = 0;
        foreach (var ro in lst)
        {
            int column = 0;
            foreach (var col in ro)
            {
                Label title = new Label
                {
                    Text = col,
                    Style = GetResourceValue("DataLabelStyle") as Style
                };
                grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
                grid.Children.Add(title, column,row);
                column++;
            }
            row++;
        }
        return grid;
    }

그래서 listview를 사용하여 동일한 효과를 생성하는 방법

편집하다:

내 ViewModel

public class BaseListViewModel : BaseViewModel
{
    public ExcelStructure Structure { get; private set; }
}

및 모델 :

public class ExcelStructure
{
    public List<string> Headers { get; set; } = new List<string>();
    public List<List<string>> Values { get; set; } = new List<List<string>>();
}
Leo Zhu-MSFT

정확히 무엇을 원하는지 잘 모르겠습니다. 각 항목에 여러 열을 원하십니까? ListView의 각 항목은 Grid의 행과 동일하며 한 행에 여러 열이 있습니다.

그렇다면 아래에서 시도해 볼 수 있습니다.

 public ListGridPage()
    {
        InitializeComponent();
        BaseListViewModel  listModel = new BaseListViewModel();
        BindingContext = listModel;
        listViewm.ItemTemplate = new DataTemplate(() =>
        {
     
            return new MyViewCell();
        });
       
    }

  class MyViewCell : ViewCell
    {
        protected override void OnBindingContextChanged()
        {
            base.OnBindingContextChanged();
            List<string> structure = (List<string>)BindingContext;
            var grid = new Grid();
            grid.ColumnSpacing = 0;
            grid.RowSpacing = 0;
            grid.ColumnDefinitions = new ColumnDefinitionCollection();
            grid.RowDefinitions = new RowDefinitionCollection();
            grid = Creategridrowscolumns(structure, grid);
            this.View = grid;
        }
        private Grid Creategridrowscolumns(List<string> structure, Grid grid)
        {
            var lst = structure as List<string>;

            int column = 0;
            foreach (var col in structure)
            {
                Label title = new Label
                {
                    Text = col,
                };
                grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(200, GridUnitType.Star) });
                grid.Children.Add(title, column, 0);
                column++;
            }

            return grid;
        }

    }

viewmodel :

class BaseListViewModel : BaseViewModel
{
    public ExcelStructure Structure { get; private set; }
    public BaseListViewModel()
    {
        Structure = new ExcelStructure();
    }
}

모델:

 public class ExcelStructure
 {

    public List<List<string>> Values { get; set; }

    public ExcelStructure()
    {
        Values = new List<List<string>>();
        Values.Add(new List<string>() {"1-A", "1-B", "1-C", "1-D", "1-E" });
        Values.Add(new List<string>() { "2-A", "2-B", "2-C", "2-D", "2-E" });
        Values.Add(new List<string>() { "3-A", "3-B", "3-C", "3-D", "3-E" });
        Values.Add(new List<string>() { "4-A", "4-B", "4-C", "4-D", "4-E" });
    }
}

효과는 다음과 같습니다.

여기에 이미지 설명 입력

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관