Example #1
0
        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;
        }