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>>();
}
정확히 무엇을 원하는지 잘 모르겠습니다. 각 항목에 여러 열을 원하십니까? 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] 삭제
몇 마디 만하겠습니다