Xamarin.FormsでListViewを動的に作成したい。

C#

1 public class gridData 2 {3 public int rownum { get; set; }4 public string item1 { get; set; }5 public string item2 { get; set; }6 }7 8 public List<gridData> GetData()9 {10 List<gridData> lst = new List<gridData>();11 12 for (int i = 0; i < 10; i++)13 {14 lst.Add(new gridData()15 {16 rownum = i + 1,17 item1 = "item1-" + i.ToString(),18 item2 = "item2-" + i.ToString(),19 });20 }21 return lst;22 }23 24 public Page1()25 {26 InitializeComponent();27 28 // テンプレートを初期化29 this.BasicGridPageCS();30 }31 32 protected async override Task<bool> OnAppearingFirstCallOnly()33 {34 List<gridData> lst = GetData();35 this.listData.ItemsSource = lst;36 return true;37 }38 39 public void BasicGridPageCS()40 {41 Grid grid = new Grid 42 {43 Padding = new Thickness(0, 0, 0, 0),44 RowSpacing = 1,45 ColumnSpacing = 1,46 RowDefinitions =47 {48 new RowDefinition { Height = new GridLength(0.1, GridUnitType.Star) },49 },50 ColumnDefinitions =51 {52 new ColumnDefinition { Width = new GridLength(0.050, GridUnitType.Star) },53 new ColumnDefinition { Width = new GridLength(0.050, GridUnitType.Star) },54 new ColumnDefinition { Width = new GridLength(0.130, GridUnitType.Star) },55 },56 };57 58 grid.Children.Add(getLabelDetail("rownum", LayoutOptions.EndAndExpand), 0, 0);59 grid.Children.Add(getLabelDetail("item1", LayoutOptions.StartAndExpand), 1, 0);60 grid.Children.Add(getLabelDetail("item2", LayoutOptions.StartAndExpand), 2, 0);61 62 DataTemplate dataTemplate = new DataTemplate(() => {63 return new ViewCell() { View = grid };64 });65 this.listData.ItemTemplate = dataTemplate;66 }67 private Label getLabelDetail(string bind, LayoutOptions layoutH)68 {69 Label lbl = new Label();70 lbl.BackgroundColor = Color.Transparent;71 lbl.FontSize = MbStdFontSize.Small;72 lbl.TextColor = Color.Black;73 lbl.HorizontalOptions = layoutH;74 lbl.VerticalOptions = LayoutOptions.Center;75 lbl.Margin = new Thickness(1, 0, 1, 0);76 lbl.SetBinding(77 Label.TextProperty,78 bind,79 BindingMode.OneWay,80 null,81 null);82 return lbl;83 }

コメントを投稿

0 コメント