public PippoCollectionUserControl() { InitializeComponent(); DataContextChanged += (sender, args) => { if (_pippoCollection == args.NewValue || args.NewValue == null) { return; } _pippoCollection = (PippoCollection)args.NewValue; if (RootGrid.ColumnDefinitions.Count != _pippoCollection.Count) { RootGrid.Children.Clear(); RootGrid.ColumnDefinitions.Clear(); for (var index = 0; index < _pippoCollection.Count; index++) { RootGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); var border = new Border { BorderBrush = new SolidColorBrush(Colors.BlueViolet), BorderThickness = new Thickness(1), Child = new TextBlock { VerticalAlignment = VerticalAlignment.Center } }; Grid.SetColumn(border, index); RootGrid.Children.Add(border); } } for (var index = 0; index < _pippoCollection.Count; index++) { Pippo pippo = _pippoCollection[index]; ((TextBlock)((Border)RootGrid.Children[index]).Child).Text = pippo.Intero.ToString(); } }; RootGrid.Tapped += async(sender, args) => { Point position = args.GetPosition(null); List <UIElement> elements = VisualTreeHelper.FindElementsInHostCoordinates(position, RootGrid).ToList(); if (elements.Count > 0 && elements[0] is TextBlock textBlock) { args.Handled = true; await BigDynamicListPage.DoSomething(textBlock.Text); } }; RootGrid.Tapped += async(sender, args) => { await BigDynamicListPage.DoSomething("second tap"); }; }
public PageViewModel() { var random = new Random(DateTime.UtcNow.Millisecond); var ints = new List <PippoCollection>(); for (var i = 0; i < 100000; i++) { var a = new PippoCollection(); for (var j = 0; j < 30; j++) { a.Add(new Pippo { Intero = random.Next() }); } ints.Add(a); } Ints = ints; }